home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / emula / 6502emu.lha / 6502 / 6502emu.s < prev    next >
Text File  |  1996-11-17  |  56KB  |  2,624 lines

  1.  
  2.  
  3.     include    myincs/Macros.i
  4.     include    exec/memory.i
  5.     include    exec/exec_lib.i
  6.     include    intuition/intuition.i
  7.     include    intuition/intuition_lib.i
  8.     include    dos/dos.i
  9.     include    dos/dos_lib.i
  10.     include    graphics/graphics_lib.i
  11.  
  12. ;==========================================================================
  13. ;Equs
  14. ;==========================================================================
  15. carry    equ    0
  16. zero    equ    1
  17. interrupt    equ    2
  18. decimal    equ    3
  19. break    equ    4
  20. overflow    equ    6
  21. negative    equ    7
  22.  
  23. Rows    equ    25
  24. Columns    equ    40
  25. ScreenBase    equ    $400
  26. MemSize    equ    $10000
  27.  
  28. ;==========================================================================
  29. ;Program
  30. ;==========================================================================
  31.     
  32. start    move.l    a7,oldsp
  33.     libopen    Int
  34.     libopen    Gfx
  35.     libopen    Dos
  36.     
  37.     push.l    a0-a3/d0
  38.     pop.l    a0-a3/d0
  39.     move.l    #0,a1
  40.     libcall    Exec,FindTask
  41.     move.l    d0,a1
  42.     move.w    #-1,d0
  43.     libcall    Exec,SetTaskPri
  44.     
  45.     lea    myNewWindow,a0
  46.     libcall    Int,OpenWindow
  47.     move.l    d0,WinPtr
  48.     tst.l    d0
  49.     beq    Cleanup
  50.  
  51.     move.l    WinPtr,a0
  52.     move.l    #menu0,a1
  53.     libcall    Int,SetMenuStrip
  54.  
  55.     move.l    WinPtr,a1
  56.     move.l    wd_RPort(a1),myRastPort
  57.     move.l    wd_UserPort(a1),UserPort
  58.     move.l    myRastPort,a1
  59.     move.l    #1,d0
  60.     libcall    Gfx,SetAPen
  61.  
  62.     move.l    #MemSize,d0
  63.     move.l    #MEMF_PUBLIC|MEMF_CLEAR,d1
  64.     libcall    Exec,AllocMem        ;allocate 64K mem
  65.     move.l    d0,a2
  66.     move.l    d0,mem6502
  67.     tst.l    d0
  68.     beq    Cleanup
  69.     clr.w    d7
  70.  
  71. ;==========================================================================
  72.     bsr    getfilename        ;load the 6502-kernal
  73.     tst.l    d0
  74.     beq    gmsg
  75.     move.l    #namebuffer,d1
  76.     move.l    #MODE_OLDFILE,d2
  77.     libcall    Dos,Open
  78.     move.l    d0,filefh
  79.     tst.l    d0
  80.     beq    noload
  81.     move.l    filefh,d1
  82.     move.l    #temp,d2
  83.     move.l    #2,d3
  84.     libcall    Dos,Read
  85.     move.w    temp,d0
  86.     bsr    lhtohl
  87.     move.l    #MemSize,d3
  88.     sub.l    d0,d3
  89.     move.l    mem6502,d2
  90.     add.l    d0,d2
  91.     move.l    filefh,d1
  92.     libcall    Dos,Read
  93.     move.l    filefh,d1
  94.     libcall    Dos,Close
  95. ;==========================================================================
  96.  
  97. noload    move.l    mem6502,a2
  98.     add.l    #$fffc,a2
  99.     move.w    (a2),d0
  100.     bsr    lhtohl
  101.     move.w    d0,pc6502        ;initalize PC
  102.     move.b    #$ff,stack        ;initalize SP
  103.  
  104.  
  105. ;==========================================================================
  106. getop    
  107. gmsg    move.l    UserPort,a0
  108.     libcall    Exec,GetMsg        ;get message from Intuition
  109.     tst.l    d0
  110.     beq    nomsg            ;d0=0 => no message has arrived
  111.     move.l    d0,a1
  112.     move.l    im_Class(a1),d2
  113.     move.w    im_Code(a1),d3
  114.     libcall    Exec,ReplyMsg        ;reply to msg
  115.     cmp.l    #IDCMP_INTUITICKS,d2    ;timer, about 10 msgs/sec
  116.     call    eq,IRQHandler
  117.     cmp.l    #IDCMP_CLOSEWINDOW,d2
  118.     beq    Cleanup
  119.     cmp.l    #IDCMP_VANILLAKEY,d2
  120.     bne.s    menuchk
  121.     move.l    #$dc01,d0
  122.     move.l    mem6502,a0        ;move ascii-code for pressed key
  123.     move.b    d3,(a0,d0.l)        ; to 6502-address $dc01
  124.     bra.s    gmsg
  125. ;==========================================================================
  126. menuchk    cmp.l    #IDCMP_MENUPICK,d2
  127.     bne.s    gmsg
  128.     move.w    d3,d6
  129.     move.w    d3,d7
  130.     and.w    #$1f,d6
  131.     lsr.w    #5,d7            ;menu in d6
  132.     and.w    #$3f,d7            ;item in d7
  133.  
  134.     move.b    d6,d1
  135.     lsl.w    #8,d1
  136.     move.b    d7,d1
  137.     lea    menutable,a1
  138. getmenu    move.w    (a1)+,d0
  139.     move.l    (a1)+,a0
  140.     cmp.w    #-1,d0
  141.     beq    gmsg
  142.     cmp.w    d0,d1
  143.     bne.s    getmenu
  144.     jsr    (a0)
  145.     bra    gmsg
  146.  
  147. ;==========================================================================
  148.  
  149. nomsg    btst.b    #0,traceonoff
  150.     beq    notrace            ;check if trace is on
  151.     btst.b    #interrupt,status_reg    ;no tracing in interrupts
  152.      beq    notrace
  153.     clr.w    d0
  154.     move.b    stack,tracesp+1        ;the values of the 6502-regs
  155.     move.b    status_reg,tracesr+1    ; before the instruction
  156.     move.b    a_reg,traceacc+1    ; is executed
  157.     move.b    x_reg,tracex+1
  158.     move.b    y_reg,tracey+1
  159.     move.w    pc6502,tracepc
  160. ;==========================================================================
  161. notrace    bsr    getbyte
  162.     and.w    #$ff,d0
  163.     lsl.w    #1,d0
  164.     lea    optable,a0
  165.     move.b    (a0,d0.w),instr
  166.     move.b    1(a0,d0.w),adrmode
  167.     move.b    instr,d0
  168.     and.w    #$ff,d0
  169.     lsl.w    #2,d0
  170.     lea    instructions,a0
  171.     move.l    (a0,d0.w),a1        ;get pointer to code to call
  172.     jsr    (a1)            ;jump to code for 6502-instruction
  173. ;==========================================================================
  174.     btst.b    #0,traceonoff
  175.     beq    getop            ;check if trace is on
  176.     btst.b    #interrupt,status_reg
  177.     beq    getop            ;no trace during interrupts
  178.     move.b    instr,d0
  179.     and.w    #$ff,d0
  180.     lsl.w    #2,d0
  181.     lea    opstrings,a0
  182.     move.l    (a0,d0.w),traceop
  183.     move.b    adrmode,d0
  184.     and.w    #$ff,d0
  185.     lsl.w    #3,d0
  186.     add.w    #4,d0
  187.     lea    adrmodes,a1
  188.     move.l    (a1,d0.w),a0
  189.     lea    traceadr,a1
  190.     bsr    copystr
  191.     lea    tracestr,a0
  192.     lea    tracesr,a1
  193.     lea    stuffchar,a2
  194.     lea    traceoutput,a3
  195.     libcall    Exec,RawDoFmt        ;format trace string
  196.     lea    traceoutput,a0
  197.     bsr    strlen
  198.     move.l    d0,d3
  199.     move.l    #traceoutput,d2
  200.     move.l    tracefh,d1
  201.     tst.l    d1
  202.     beq    getop
  203.     libcall    Dos,Write        ;print trace string
  204.     clr.w    tracedata
  205.     bra    getop
  206.  
  207. ;==========================================================================
  208. ;6502-instructions
  209. ;==========================================================================
  210.  
  211. adc65    bsr    getadr
  212.     move.w    d0,d1
  213.     bsr    readadr
  214.     move.b    a_reg,d1
  215.     move    status_reg,ccr
  216.     btst    #decimal,status_reg     ;check if BCD-mode is on
  217.     bne.s    .nobcd
  218.     abcd.b    d0,d1
  219.     bra.s    .skip
  220. .nobcd    add.b    d0,d1
  221. .skip    bclr    #carry,status_reg
  222.     bcc.s    .nocarry
  223.     bset    #carry,status_reg
  224. .nocarry    move.b    a_reg,d2
  225.     move.b    d1,d3
  226.     and.b    #%01000000,d2
  227.     and.b    #%01000000,d3
  228.     cmp.b    d2,d3            ;check if overflow has occured
  229.     beq.s    .nooverflow
  230.     bset    #overflow,status_reg
  231. .nooverflow    move.b    d1,d0
  232.     move.b    d1,a_reg
  233.     bsr    testsign
  234.     rts
  235.  
  236. ;==========================================================================
  237.  
  238. and65    bsr    getadr
  239.     move.w    d0,d1
  240.     bsr    readadr
  241.     and.b    d0,a_reg
  242.     move.b    a_reg,d0
  243.     bsr    testsign
  244.     rts
  245.  
  246. ;==========================================================================
  247.  
  248. asl65    bsr    getadr
  249.     move.w    d0,d2
  250.     move.l    a0,a2
  251.     move.b    a_reg,d0
  252.     cmp.l    #0,a0
  253.     beq.s    .acc
  254.     bsr    readadr
  255. .acc    bclr    #carry,status_reg
  256.     lsl.b    #1,d0
  257.     bcc.s    .nocarry
  258.     bset    #carry,status_reg
  259. .nocarry    move.b    d0,d3
  260.     bsr    testsign
  261.     cmp.l    #0,a2
  262.     bne.s    .noacc
  263.     move.b    d3,a_reg
  264.     rts
  265. .noacc    move.b    d3,d0
  266.     move.w    d2,d1
  267.     bsr    writeadr
  268.     rts
  269.  
  270. ;==========================================================================
  271.  
  272. bcc65    btst    #carry,status_reg
  273.     beq    branch
  274.     bsr    getadr
  275.     rts
  276.  
  277. ;==========================================================================
  278.  
  279. bcs65    btst    #carry,status_reg
  280.     bne    branch
  281.     bsr    getadr
  282.     rts
  283.  
  284. ;==========================================================================
  285.  
  286. beq65    btst    #zero,status_reg
  287.     bne    branch
  288.     bsr    getadr
  289.     rts
  290.  
  291. ;==========================================================================
  292.  
  293. bit65    bsr    getadr
  294.     move.l    d0,d1
  295.     move.l    a0,a2
  296.     bsr    readadr
  297.     move.b    a_reg,d1
  298.     bclr    #zero,status_reg
  299.     bclr    #negative,status_reg
  300.     bclr    #overflow,status_reg
  301.     and.b    d0,d1
  302.     bne.s    .notzero
  303.     bset    #zero,status_reg
  304. .notzero    btst    #7,(a2)
  305.     beq.s    .notneg
  306.     bset    #negative,status_reg
  307. .notneg    btst    #6,(a2)
  308.     ret    eq
  309.     bset    #overflow,status_reg
  310.     rts
  311.  
  312. ;==========================================================================
  313.  
  314. bmi65    btst    #negative,status_reg
  315.     bne    branch
  316.     bsr    getadr
  317.     rts
  318.  
  319. ;==========================================================================
  320.  
  321. bne65    btst    #zero,status_reg
  322.     beq    branch
  323.     bsr    getadr
  324.     rts
  325.  
  326. ;==========================================================================
  327.  
  328. bpl65    btst    #negative,status_reg
  329.     beq    branch
  330.     bsr    getadr
  331.     rts
  332.  
  333. ;==========================================================================
  334.  
  335. brk65    bset    #break,status_reg
  336.     move.w    pc6502,d0
  337.     inc.w    d0
  338.     bsr    hltolh
  339.     move.w    d0,d3
  340.     bsr    putstack        ;push low-byte of PC
  341.     lsr.w    #8,d3
  342.     move.b    d3,d0
  343.     bsr    putstack        ;push high-byte of PC
  344.     move.b    status_reg,d0
  345.     bsr    putstack        ;push the SR    
  346.     bset    #interrupt,status_reg
  347.     move.l    mem6502,a0
  348.     add.l    #$fffe,a0
  349.     move.w    (a0),d0
  350.     bsr    lhtohl
  351.     move.w    d0,pc6502        ;jump to interrupt-routine
  352.     rts
  353.  
  354. ;==========================================================================
  355.  
  356. bvc65    btst    #overflow,status_reg
  357.     beq    branch
  358.     bsr    getadr
  359.     rts
  360.  
  361. ;==========================================================================
  362.  
  363. bvs65    btst    #overflow,status_reg
  364.     bne    branch
  365.     bsr    getadr
  366.     rts
  367.  
  368. ;==========================================================================
  369.  
  370. clc65    bclr    #carry,status_reg
  371.     rts
  372.  
  373. ;==========================================================================
  374.  
  375. cld65    bclr    #decimal,status_reg
  376.     rts
  377.  
  378. ;==========================================================================
  379.  
  380. cli65    bclr    #interrupt,status_reg
  381.     rts
  382.  
  383. ;==========================================================================
  384.  
  385. clv65    bclr    #overflow,status_reg
  386.     rts
  387.  
  388. ;==========================================================================
  389.  
  390. cmp65    bsr    getadr
  391.     move.l    d0,d1
  392.     bsr    readadr
  393.     bclr    #carry,status_reg
  394.     sub.b    a_reg,d0
  395.     blt.s    .nocarry
  396.     bset    #carry,status_reg
  397. .nocarry    bsr    testsign
  398.     rts
  399.  
  400. ;==========================================================================
  401.  
  402. cpx65    bsr    getadr
  403.     move.l    d0,d1
  404.     bclr    #carry,status_reg
  405.     bsr    readadr
  406.     sub.b    x_reg,d0
  407.     blt.s    .nocarry
  408.     bset    #carry,status_reg
  409. .nocarry    bsr    testsign
  410.     rts
  411.  
  412. ;==========================================================================
  413.  
  414. cpy65    bsr    getadr
  415.     move.l    d0,d1
  416.     bclr    #carry,status_reg
  417.     bsr    readadr
  418.     sub.b    y_reg,d0
  419.     blt.s    .nocarry
  420.     bset    #carry,status_reg
  421. .nocarry    bsr    testsign
  422.     rts
  423.  
  424. ;==========================================================================
  425.  
  426. dec65    bsr    getadr
  427.     move.l    d0,d1
  428.     push.w    d1
  429.     bsr    readadr
  430.     dec.b    d0
  431.     pop.w    d1
  432.     move.b    d0,d2
  433.     bsr    writeadr
  434.     move.b    d2,d0
  435.     bsr    testsign
  436.     rts
  437.  
  438. ;==========================================================================
  439.  
  440. dex65    dec.b    x_reg
  441.     move.b    x_reg,d0
  442.     bsr    testsign    
  443.     rts
  444.  
  445. ;==========================================================================
  446.  
  447. dey65    dec.b    y_reg
  448.     move.b    y_reg,d0
  449.     bsr    testsign
  450.     rts
  451.  
  452. ;==========================================================================
  453.  
  454. eor65    bsr    getadr
  455.     move.l    d0,d1
  456.     bsr    readadr
  457.     eor.b    d0,a_reg
  458.     move.b    a_reg,d0
  459.     bsr    testsign
  460.     rts
  461.  
  462. ;==========================================================================
  463.  
  464. inc65    bsr    getadr
  465.     move.l    d0,d1
  466.     push.w    d1
  467.     bsr    readadr
  468.     inc.b    d0
  469.     pop.w    d1
  470.     move.b    d0,d2
  471.     bsr    writeadr
  472.     move.b    d2,d0
  473.     bsr    testsign
  474.     rts
  475.  
  476. ;==========================================================================
  477.  
  478. inx65    inc.b    x_reg
  479.     move.b    x_reg,d0        
  480.     bsr    testsign
  481.     rts
  482.  
  483. ;==========================================================================
  484.  
  485. iny65    inc.b    y_reg
  486.     move.b    y_reg,d0
  487.     bsr    testsign
  488.     rts
  489.  
  490. ;==========================================================================
  491.  
  492. jmp65    bsr    getadr
  493.     move.w    d0,pc6502
  494.     rts
  495.  
  496. ;==========================================================================
  497.  
  498. jsr65    bsr    getadr
  499.     move.w    d0,d3
  500.     move.b    pc6502,d0
  501.     bsr    putstack
  502.     move.b    pc6502+1,d0
  503.     bsr    putstack
  504.     move.w    d3,pc6502
  505.     rts
  506.  
  507. ;==========================================================================
  508.  
  509. lda65    bsr    getadr
  510.     move.l    d0,d1
  511.     bsr    readadr
  512.     move.b    d0,a_reg
  513.     bsr    testsign
  514.     rts
  515.  
  516. ;==========================================================================
  517.  
  518. ldx65    bsr    getadr
  519.     move.l    d0,d1
  520.     bsr    readadr
  521.     move.b    d0,x_reg
  522.     bsr    testsign
  523.     rts
  524.  
  525. ;==========================================================================
  526.  
  527. ldy65    bsr    getadr
  528.     move.l    d0,d1
  529.     bsr    readadr
  530.     move.b    d0,y_reg
  531.     bsr    testsign
  532.     rts
  533.  
  534. ;==========================================================================
  535.  
  536. lsr65    bsr    getadr
  537.     move.l    d0,d1
  538.     move.w    d1,d2
  539.     move.l    a0,a2
  540.     move.b    a_reg,d0
  541.     cmp.l    #0,a0
  542.     beq.s    .acc
  543.     bsr    readadr
  544. .acc    bclr    #carry,status_reg
  545.     lsr.b    #1,d0
  546.     bcc.s    .nocarry
  547.     bset    #carry,status_reg
  548. .nocarry    move.b    d0,d3
  549.     bsr    testsign
  550.     cmp.l    #0,a2
  551.     bne.s    .noacc
  552.     move.b    d3,a_reg
  553.     rts
  554. .noacc    move.b    d3,d0
  555.     move.w    d2,d1
  556.     bsr    writeadr
  557.     rts
  558.  
  559. ;==========================================================================
  560.  
  561. nop65    bsr    getadr
  562.     rts
  563.  
  564. ;==========================================================================
  565.  
  566. ora65    bsr    getadr
  567.     move.l    d0,d1
  568.     bsr    readadr
  569.     or.b    d0,a_reg
  570.     move.b    a_reg,d0
  571.     bsr    testsign
  572.     rts
  573.  
  574. ;==========================================================================
  575.  
  576. pha65    move.b    a_reg,d0
  577.     bsr    putstack
  578.     rts
  579.  
  580. ;==========================================================================
  581.  
  582. php65    move.b    status_reg,d0
  583.     bsr    putstack
  584.     rts
  585.  
  586. ;==========================================================================
  587.  
  588. pla65    bsr    getstack
  589.     move.b    d0,a_reg
  590.     bsr    testsign
  591.     rts
  592.  
  593. ;==========================================================================
  594.  
  595. plp65    bsr    getstack
  596.     move.b    d0,status_reg
  597.     rts
  598.  
  599. ;==========================================================================
  600.  
  601. rol65    bsr    getadr
  602.     move.l    d0,d1
  603.     move.b    a_reg,d0
  604.     move.l    a0,a2
  605.     move.w    d1,d3
  606.     cmp.l    #0,a0
  607.     beq.s    .acc
  608.     bsr    readadr
  609. .acc    move.b    status_reg,d2
  610.     lsl.b    #7,d2
  611.     ext.w    d2
  612.     move.b    d0,d2
  613.     rol.w    #1,d2
  614.     move.b    d2,d0
  615.     lsr.w    #8,d2
  616.     and.b    #$fe,d2
  617.     or.b    d2,status_reg
  618.     push.w    d0
  619.     bsr    testsign
  620.     pop.w    d0
  621.     cmp.l    #0,a2
  622.     bne.s    .noacc
  623.     move.b    d0,a_reg
  624.     rts
  625. .noacc    move.w    d3,d1
  626.     bsr    writeadr
  627.     rts
  628.  
  629. ;==========================================================================
  630.  
  631. ror65    bsr    getadr
  632.     move.l    d0,d1
  633.     move.b    a_reg,d0
  634.     move.l    a0,a2
  635.     move.w    d1,d3
  636.     cmp.l    #0,a0
  637.     beq.s    .acc
  638.     bsr    readadr
  639. .acc    move.b    status_reg,d2
  640.     lsl.b    #7,d2
  641.     ext.w    d2
  642.     move.b    d0,d2
  643.     ror.w    #1,d2
  644.     move.b    d2,d0
  645.     rol.w    #1,d2
  646.     and.b    #1,d2
  647.     or.b    d2,status_reg
  648.     push.w    d0
  649.     bsr    testsign
  650.     pop.w    d0
  651.     cmp.l    #0,a2
  652.     bne.s    .noacc
  653.     move.b    d0,a_reg
  654.     rts
  655. .noacc    move.w    d3,d1
  656.     bsr    writeadr
  657.     rts
  658.  
  659. ;==========================================================================
  660.  
  661. rti65    bsr    getstack
  662.     move.b    d0,status_reg
  663.     bsr    getstack
  664.     move.b    d0,pc6502+1
  665.     bsr    getstack
  666.     move.b    d0,pc6502
  667.     rts
  668.  
  669. ;==========================================================================
  670.  
  671. rts65    bsr    getstack
  672.     move.b    d0,pc6502+1
  673.     bsr    getstack
  674.     move.b    d0,pc6502
  675.     rts
  676.  
  677. ;==========================================================================
  678.  
  679. sbc65    bsr    getadr
  680.     move.l    d0,d1
  681.     bsr    readadr
  682.     move.b    a_reg,d1
  683.     move    status_reg,ccr
  684.     btst    #decimal,status_reg
  685.     bne.s    .nobcd
  686.     sbcd.b    d0,d1
  687.     bra.s    .skip
  688. .nobcd    sbc.b    d0,d1
  689. .skip    bclr    #carry,status_reg
  690.     bcc.s    .nocarry
  691.     bset    #carry,status_reg
  692. .nocarry    move.b    a_reg,d2
  693.     move.b    d1,d3
  694.     and.b    #%01000000,d2
  695.     and.b    #%01000000,d3
  696.     cmp.b    d2,d3
  697.     beq.s    .nooverflow
  698.     bset    #overflow,status_reg
  699. .nooverflow    move.b    d1,d0
  700.     move.b    d1,a_reg
  701.     bsr    testsign
  702.     rts
  703.  
  704. ;==========================================================================
  705.  
  706. sec65    bset    #carry,status_reg
  707.     rts
  708.  
  709. ;==========================================================================
  710.  
  711. sed65    bset    #decimal,status_reg
  712.     rts
  713.  
  714. ;==========================================================================
  715.  
  716. sei65    bset    #interrupt,status_reg
  717.     rts
  718.  
  719. ;==========================================================================
  720.  
  721. sta65    bsr    getadr
  722.     move.l    d0,d1
  723.     move.b    a_reg,d0
  724.     bsr    writeadr
  725.     rts
  726.  
  727. ;==========================================================================
  728.  
  729. stx65    bsr    getadr
  730.     move.l    d0,d1
  731.     move.b    x_reg,d0
  732.     bsr    writeadr
  733.     rts
  734.  
  735. ;==========================================================================
  736.  
  737. sty65    bsr    getadr
  738.     move.l    d0,d1
  739.     move.b    y_reg,d0
  740.     bsr    writeadr
  741.     rts
  742.  
  743. ;==========================================================================
  744.  
  745. tax65    move.b    a_reg,d0
  746.     move.b    d0,x_reg
  747.     bsr    testsign
  748.     rts
  749.  
  750. ;==========================================================================
  751.  
  752. tay65    move.b    a_reg,d0
  753.     move.b    d0,y_reg
  754.     bsr    testsign
  755.     rts
  756.  
  757. ;==========================================================================
  758.  
  759. tsx65    move.b    stack,d0
  760.     move.b    d0,x_reg
  761.     bsr    testsign
  762.     rts
  763.  
  764. ;==========================================================================
  765.  
  766. txa65    move.b    x_reg,d0
  767.     move.b    d0,a_reg
  768.     bsr    testsign
  769.     rts
  770.  
  771. ;==========================================================================
  772.  
  773. txs65    move.b    x_reg,stack
  774.     rts
  775.  
  776. ;==========================================================================
  777.  
  778. tya65    move.b    y_reg,d0
  779.     move.b    d0,a_reg
  780.     bsr    testsign
  781.     rts
  782.  
  783. ;==========================================================================
  784.  
  785. anc65
  786.  
  787. ;==========================================================================
  788.  
  789. ane65
  790.  
  791. ;==========================================================================
  792.  
  793. arr65
  794.  
  795. ;==========================================================================
  796.  
  797. asr65
  798.  
  799. ;==========================================================================
  800.  
  801. dcp65
  802.  
  803. ;==========================================================================
  804.  
  805. isb65
  806.  
  807. ;==========================================================================
  808.  
  809. jam65
  810.  
  811. ;==========================================================================
  812.  
  813. lae65
  814.  
  815. ;==========================================================================
  816.  
  817. lax65
  818.  
  819. ;==========================================================================
  820.  
  821. lxa65
  822.  
  823. ;==========================================================================
  824.  
  825. rla65
  826.  
  827. ;==========================================================================
  828.  
  829. rra65
  830.  
  831. ;==========================================================================
  832.  
  833. sax65
  834.  
  835. ;==========================================================================
  836.  
  837. sbx65
  838.  
  839. ;==========================================================================
  840.  
  841. sha65
  842.  
  843. ;==========================================================================
  844.  
  845. shs65
  846.  
  847. ;==========================================================================
  848.  
  849. shx65
  850.  
  851. ;==========================================================================
  852.  
  853. shy65
  854.  
  855. ;==========================================================================
  856.  
  857. slo65
  858.  
  859. ;==========================================================================
  860.  
  861. sre65
  862.  
  863. ;==========================================================================
  864.  
  865. illegal65    rts                ;illegal instruction
  866.  
  867.  
  868.  
  869.  
  870. ;==========================================================================
  871. ;Subroutines
  872. ;==========================================================================
  873.  
  874. Cleanup    tst.l    tracefh
  875.     beq.s    win
  876.     move.l    tracefh,d1
  877.     libcall    Dos,Close
  878. win    tst.l    WinPtr
  879.     beq.s    next
  880.     move.l    WinPtr,a0
  881.     libcall    Int,ClearMenuStrip
  882.     move.l    WinPtr,a0
  883.     libcall    Int,CloseWindow
  884. next    libclose    Gfx
  885.     libclose    Int
  886.     libclose    Dos
  887.     tst.l    mem6502
  888.     beq.s    quit
  889.     move.l    mem6502,a1
  890.     move.l    #MemSize,d0
  891.     libcall    Exec,FreeMem
  892. quit    clr.l    d0
  893.     move.l    oldsp,a7
  894.     rts
  895.  
  896. ;==========================================================================
  897.  
  898. IRQHandler    btst    #interrupt,status_reg
  899.     ret    ne
  900.     move.b    pc6502,d0
  901.     bsr    putstack
  902.     move.b    pc6502+1,d0
  903.     bsr    putstack
  904.     move.b    status_reg,d0
  905.     bsr    putstack
  906.     move.l    mem6502,a0
  907.     add.l    #$fffe,a0
  908.     move.w    (a0),d0
  909.     bsr    lhtohl
  910.     move.w    d0,pc6502
  911.     bset    #interrupt,status_reg
  912.     rts
  913.  
  914. ;==========================================================================
  915.  
  916. NMIHandler    move.b    pc6502,d0
  917.     bsr    putstack
  918.     move.b    pc6502+1,d0
  919.     bsr    putstack
  920.     move.b    status_reg,d0
  921.     bsr    putstack
  922.     move.l    mem6502,a0
  923.     add.l    #$fffa,a0
  924.     move.w    (a0),d0
  925.     bsr    lhtohl
  926.     move.w    d0,pc6502
  927.     bset    #interrupt,status_reg
  928.     rts
  929.  
  930. ;==========================================================================
  931.  
  932. menuload    bsr    getfilename
  933.     tst.l    d0
  934.     beq    gmsg
  935.     move.l    #namebuffer,d1
  936.     move.l    #MODE_OLDFILE,d2
  937.     libcall    Dos,Open
  938.     move.l    d0,filefh
  939.     tst.l    d0
  940.     beq    gmsg
  941.     move.l    filefh,d1
  942.     move.l    #temp,d2
  943.     move.l    #2,d3
  944.     libcall    Dos,Read
  945.     clr.l    d0
  946.     move.w    temp,d0
  947.     move.w    d0,pc6502
  948.     move.l    #MemSize,d3
  949.     sub.l    d0,d3
  950.     move.l    mem6502,d2
  951.     add.l    d0,d2
  952.     move.l    filefh,d1
  953.     libcall    Dos,Read
  954.     move.l    filefh,d1
  955.     libcall    Dos,Close
  956.     rts
  957.  
  958. ;==========================================================================
  959.  
  960. menusave    bsr    getfilename
  961.     tst.l    d0
  962.     beq    gmsg
  963.     move.l    #namebuffer,d1
  964.     move.l    #MODE_NEWFILE,d2
  965.     libcall    Dos,Open
  966.     move.l    d0,filefh
  967.     tst.l    d0
  968.     beq    gmsg
  969.     move.l    filefh,d1
  970.     clr.l    temp
  971.     move.l    #temp,d2
  972.     move.l    #2,d3
  973.     libcall    Dos,Write
  974.     move.l    filefh,d1
  975.     move.l    mem6502,d2
  976.     move.l    #MemSize,d3
  977.     libcall    Dos,Write
  978.     move.l    filefh,d1
  979.     libcall    Dos,Close
  980.     rts
  981.  
  982. ;==========================================================================
  983.  
  984. menutrace    btst.b    #0,traceonoff        ;turn the trace function on and off
  985.     beq    .notrace
  986.     tst.l    tracefh
  987.     bne    gmsg
  988.     move.l    #tracewin,d1
  989.     move.l    #MODE_NEWFILE,d2
  990.     libcall    Dos,Open
  991.     move.l    d0,tracefh
  992.     bra    gmsg
  993. .notrace    tst.l    tracefh
  994.     beq    gmsg
  995.     move.l    tracefh,d1
  996.     libcall    Dos,Close
  997.     clr.l    tracefh
  998.     rts
  999.  
  1000. ;==========================================================================
  1001. menuedit    rts
  1002.  
  1003. ;==========================================================================
  1004. menusstep     rts
  1005.  
  1006. ;==========================================================================
  1007.  
  1008. getfilename    move.l    #reqname,d1         ;output :d0.l=namelen
  1009.     move.l    #MODE_NEWFILE,d2     ; error -> d0=0
  1010.     libcall    Dos,Open         ;open request_window
  1011.     move.l    d0,reqfh
  1012.     tst.l    d0
  1013.     ret    eq
  1014.     move.l    reqfh,d1
  1015.     move.l    #namebuffer,d2
  1016.     move.l    #200,d3
  1017.     libcall    Dos,Read        ;read name
  1018.     push.l    d0
  1019.     lea    namebuffer,a0
  1020. zloop    move.b    (a0),d0
  1021.     cmp.b    #$0a,d0    ;check for LF
  1022.     bne.s    nolf
  1023.     move.b    #0,(a0)
  1024. nolf    cmp.b    #0,(a0)+        ;check for ending zero
  1025.     bne.s    zloop
  1026.     move.l    reqfh,d1
  1027.     libcall    Dos,Close        ;close window
  1028.     pop.l    d0
  1029.     rts
  1030. ;==========================================================================
  1031.  
  1032. hltolh                    ;input     :d0.w
  1033. lhtohl    move.w    d0,d1            ;output    :d0.l
  1034.     rol.w    #8,d1
  1035.     clr.l    d0            ;swaps the high and
  1036.     move.w    d1,d0            ;low bytes of a word
  1037.     rts
  1038.     
  1039. ;==========================================================================
  1040. getbyte    move.w    pc6502,d1        ;output :d0.b
  1041.     bsr    readadr
  1042.     inc.w    pc6502
  1043.     rts
  1044. ;==========================================================================
  1045. putstack    clr.l    d1            ;input  :d0.b
  1046.     move.b    stack,d1
  1047.     add.l    mem6502,d1
  1048.     move.l    d1,a0
  1049.     move.b    d0,$100(a0)
  1050.     dec.b    stack
  1051.     rts
  1052. ;==========================================================================
  1053. getstack    clr.l    d1            ;output :d0.b    
  1054.     inc.b    stack
  1055.     move.b    stack,d1
  1056.     add.l    mem6502,d1
  1057.     move.l    d1,a0
  1058.     move.b    $100(a0),d0
  1059.     rts
  1060. ;==========================================================================
  1061. testsign    bclr    #zero,status_reg    ;input :d0.b
  1062.     bclr    #negative,status_reg
  1063.     tst.b    d0
  1064.     bne.s    .notz
  1065.     bset    #zero,status_reg
  1066.     bra.s    .notneg
  1067. .notz    btst    #7,d0
  1068.     beq.s    .notneg
  1069.     bset    #negative,status_reg
  1070. .notneg    rts
  1071. ;==========================================================================
  1072.  
  1073. getlast    move.w    pc6502,d1        ;output :d0.b
  1074.     dec.w    d1
  1075.     bsr    readadr
  1076.     rts
  1077. ;==========================================================================
  1078.  
  1079. branch    bsr    getadr
  1080.     move.w    d0,pc6502
  1081.     rts
  1082.  
  1083. ;==========================================================================
  1084. ; Calculating the address
  1085. ;==========================================================================
  1086.  
  1087. getadr    move.b    adrmode,d0        ;output :a0.l (68000 adr)
  1088.     and.w    #$ff,d0            ;output :d0.l (6502 adr)
  1089.     lsl.w    #3,d0            ;if acc. a0.l=0 
  1090.     lea    adrmodes,a0
  1091.     move.l    (a0,d0.w),a1
  1092.     jsr    (a1)
  1093.     rts
  1094.  
  1095. ;==========================================================================
  1096. adrimp    move.w    #0,tracedata
  1097.     rts
  1098.  
  1099. ;==========================================================================
  1100. adrabs    bsr    getbyte            ;absolute
  1101.     push.w    d0
  1102.     bsr    getbyte
  1103.     move.b    d0,d1
  1104.     lsl.w    #8,d1
  1105.     pop.w    d0
  1106.     move.b    d0,d1
  1107.     bsr    calcadr
  1108.     move.w    d1,tracedata
  1109.     move.l    d1,d0
  1110.     rts
  1111. ;==========================================================================
  1112. adrzero    bsr    getbyte            ;zero
  1113.     clr.w    d1
  1114.     move.b    d0,d1
  1115.     bsr    calcadr
  1116.     move.w    d1,tracedata
  1117.     move.l    d1,d0
  1118.     rts
  1119. ;==========================================================================
  1120. adrimm    move.w    pc6502,-(sp)        ;immediate
  1121.     bsr    getbyte
  1122.     move.w    (sp)+,d1
  1123.     ext.w    d0
  1124.     move.w    d0,tracedata
  1125.     bsr    calcadr
  1126.     move.l    d1,d0
  1127.     rts
  1128. ;==========================================================================
  1129. adrabsx    bsr    getbyte            ;absolute,x
  1130.     push.w    d0
  1131.     bsr    getbyte
  1132.     move.b    d0,d1
  1133.     lsl.w    #8,d1
  1134.     pop.w    d0
  1135.     move.b    d0,d1
  1136.     move.w    d1,tracedata
  1137.     clr.w    d0
  1138.     move.b    x_reg,d0
  1139.     add.w    d0,d1
  1140.     bsr    calcadr
  1141.     move.l    d1,d0
  1142.     rts
  1143.  
  1144. ;==========================================================================
  1145.  
  1146. adrabsy    bsr    getbyte            ;absolute,y
  1147.     push.w    d0
  1148.     bsr    getbyte
  1149.     move.b    d0,d1
  1150.     lsl.w    #8,d1
  1151.     pop.w    d0
  1152.     move.b    d0,d1
  1153.     move.w    d1,tracedata
  1154.     clr.w    d0
  1155.     move.b    y_reg,d0
  1156.     add.w    d0,d1
  1157.     bsr    calcadr
  1158.     move.l    d1,d0
  1159.     rts
  1160. ;==========================================================================
  1161. adrindx    clr.l    d0
  1162.     bsr    getbyte            ;(indirect,x)
  1163.     move.w    d0,tracedata
  1164.     add.b    x_reg,d0
  1165.     move.w    d0,d1
  1166.     bsr    calcadr
  1167.     move.w    (a0),d0
  1168.     bsr    lhtohl
  1169.     move.w    d0,d1
  1170.     bsr    calcadr
  1171.     move.l    d1,d0
  1172.     rts
  1173. ;==========================================================================
  1174. adrindy    bsr    getbyte            ;(indirect),y
  1175.     clr.w    d1
  1176.     move.b    d0,d1
  1177.     move.w    d1,tracedata
  1178.     bsr    calcadr
  1179.     move.w    (a0),d0
  1180.     bsr    lhtohl
  1181.     clr.w    d1
  1182.     move.b    y_reg,d1
  1183.     add.w    d0,d1
  1184.     bsr    calcadr
  1185.     move.l    d1,d0
  1186.     rts
  1187. ;==========================================================================
  1188. adrzerox    bsr    getbyte            ;zero,x
  1189.     clr.w    d1
  1190.     move.b    d0,d1
  1191.     move.w    d1,tracedata
  1192.     add.b    x_reg,d0
  1193.     bsr    calcadr
  1194.     move.l    d1,d0
  1195.     rts
  1196. ;==========================================================================
  1197. adrzeroy    bsr    getbyte            ;zero,y
  1198.     clr.w    d1
  1199.     move.b    d0,d1
  1200.     move.w    d1,tracedata
  1201.     add.b    y_reg,d0
  1202.     clr.w    d1
  1203.     move.b    d0,d1
  1204.     bsr    calcadr
  1205.     move.l    d1,d0
  1206.     rts
  1207. ;==========================================================================
  1208. adracc    move.l    #0,a0            ;accumulator
  1209.     move.w    #0,tracedata
  1210.     move.l    d1,d0
  1211.     rts
  1212. ;==========================================================================
  1213. adrind    bsr    getbyte            ;(indirect)
  1214.     push.w    d0
  1215.     bsr    getbyte
  1216.     move.b    d0,d1
  1217.     pop.w    d0
  1218.     lsl.w    #8,d1
  1219.     move.b    d0,d1
  1220.     move.w    d1,tracedata
  1221.     push.w    d1
  1222.     bsr    readadr
  1223.     pop.w    d1
  1224.     push.w    d0
  1225.     inc    d1
  1226.     bsr    readadr
  1227.     move.b    d0,d1
  1228.     lsl.w    #8,d1
  1229.     pop.w    d0
  1230.     move.b    d0,d1
  1231.     bsr    calcadr
  1232.     move.l    d1,d0
  1233.     rts
  1234. ;==========================================================================
  1235. adrrel    bsr    getbyte
  1236.     ext.w    d0
  1237.     move.w    pc6502,d1
  1238.     add.w    d0,d1
  1239.     move.w    d1,tracedata
  1240.     bsr    calcadr
  1241.     move.l    d1,d0
  1242.     rts
  1243. ;==========================================================================
  1244.  
  1245. calcadr    clr.l    d0            ;input  :d1.w (6502 adr)
  1246.     move.w    d1,d0            ;output :d0/a0 (68000 adr)
  1247.     add.l    mem6502,d0        ;d1.w unchanged
  1248.     move.l    d0,a0
  1249.     rts
  1250.  
  1251. ;==========================================================================
  1252. ; Hardware-emulation
  1253. ;==========================================================================
  1254. readadr    move.w    d1,d0            ;input  :d1.w (6502 adr)
  1255.     lsr.w    #8,d1            ;output :d0.l
  1256.     and.l    #$ff,d1
  1257.     lsl.l    #2,d1
  1258.     move.l    #readpages,a0
  1259.     move.l    (a0,d1.l),a0
  1260.     jmp    (a0)        ;d0.w = 6502adr 
  1261.                 ;rts from called routine
  1262.                 
  1263. ;==========================================================================
  1264.  
  1265. writeadr    move.w    d1,d2            ;input  :d1.w (6502 adr)
  1266.     lsr.w    #8,d1            ;input  :d0.b
  1267.     and.l    #$ff,d1
  1268.     lsl.l    #2,d1
  1269.     move.l    #writepages,a0
  1270.     move.l    (a0,d1.l),a0
  1271.     move.b    d0,d1        ;d1.b = data
  1272.     move.w    d2,d0        ;d0.w = 6502adr
  1273.     jmp    (a0)        ;rts from called routine
  1274.  
  1275. ;==========================================================================
  1276.  
  1277. read_normaladr    and.l    #$ffff,d0
  1278.     move.l    mem6502,a0
  1279.     move.b    (a0,d0.l),d0
  1280.     rts
  1281.  
  1282. ;==========================================================================
  1283.  
  1284. write_normaladr    and.l    #$ffff,d0
  1285.     move.l    mem6502,a0
  1286.     move.b    d1,(a0,d0.l)
  1287.     rts
  1288.  
  1289. ;==========================================================================
  1290. write_screenadr    push.w    d1
  1291.     push.w    d0
  1292.     sub.w    #ScreenBase,d0
  1293.     and.l    #$ffff,d0
  1294.     cmp.w    #Rows*Columns,d0
  1295.     bge    .notscreen
  1296.     divu.w    #Columns,d0
  1297.     move.w    d0,d1
  1298.     swap    d0
  1299.     bsr    Locate
  1300.     move.w    2(sp),d0
  1301.     bsr    PrintChar
  1302. .notscreen    pop.w    d1
  1303.     and.l    #$ffff,d1
  1304.     move.l    d1,a0
  1305.     add.l    mem6502,a0
  1306.     pop.w    d0    
  1307.     move.b    d0,(a0)
  1308.     rts
  1309.  
  1310.  
  1311. ;==========================================================================
  1312.  
  1313. read_ioadr    cmp.b    #1,d0
  1314.     bne    read_normaladr
  1315.     and.l    #$ffff,d0
  1316.     move.l    d0,a0
  1317.     add.l    mem6502,a0
  1318.     move.b    (a0),d0
  1319.     move.b    #0,(a0)
  1320.     rts
  1321.     
  1322. ;==========================================================================
  1323.  
  1324. write_ioadr    cmp.b    #1,d0
  1325.     bne    write_normaladr
  1326.     rts
  1327.  
  1328. ;==========================================================================
  1329.  
  1330. ; This routine assumes that characters are 8x8 pixels big.
  1331. ; Should be changed to account for different fonts. 
  1332. ; (Or code should explicitly ask for Topaz/8)
  1333. Locate    and.l    #$ffff,d0        ;input : x=d0.w
  1334.     and.l    #$ffff,d1        ;input : y=d1.w     
  1335.     lsl.w    #3,d0
  1336.     lsl.w    #3,d1
  1337.     add.w    #$12,d1
  1338.     addq.w    #5,d0
  1339.     move.l    myRastPort,a1
  1340.     libcall    Gfx,Move
  1341.     rts
  1342.  
  1343. ;==========================================================================
  1344.  
  1345. PrintChar    cmp.b    #$20,d0            ;input  : d0.b
  1346.     blt.s    .ctrl
  1347.     move.b    d0,temp
  1348.     move.l    myRastPort,a1
  1349.     lea    temp,a0
  1350.     move.l    #1,d0
  1351.     libcall    Gfx,Text
  1352. .ctrl    rts
  1353.  
  1354. ;==========================================================================
  1355.  
  1356.  
  1357. strlen    move.l    #-1,d0            ;input  :a0=stradr
  1358. .loop    inc.l    d0            ;output :d0.l
  1359.     move.b    (a0)+,d1        ;doesn't count the
  1360.     bne.s    .loop            ; ending zero
  1361.     rts
  1362.     
  1363. ;==========================================================================
  1364.  
  1365. copystr    move.b    (a0)+,d0        ;input :a0=source
  1366.     move.b    d0,(a1)+        ;input :a1=dest
  1367.     bne.s    copystr
  1368.     rts
  1369.  
  1370. ;==========================================================================
  1371. ;support for the RawDoFmt exec-function
  1372. stuffchar    move.b    d0,(a3)+
  1373.     rts
  1374.  
  1375.  
  1376.  
  1377. ;==========================================================================
  1378. ;6502-regs
  1379. ;==========================================================================
  1380. a_reg    dc.b    0
  1381.     even
  1382. x_reg    dc.b    0
  1383.     even
  1384. y_reg    dc.b    0
  1385.     even
  1386. status_reg    dc.b    0
  1387.     even
  1388. pc6502    dc.w    0
  1389. stack    dc.b    0
  1390.     even
  1391.  
  1392. ;==========================================================================
  1393. ;Pointers, variables and structures
  1394. ;==========================================================================
  1395.  
  1396. instr    dc.b    0
  1397. adrmode    dc.b    0
  1398. reqfh    dc.l    0
  1399. filefh    dc.l    0
  1400. mem6502    dc.l    0
  1401. temp    dc.l    0
  1402. myRastPort    dc.l    0
  1403. WinPtr    dc.l    0
  1404. UserPort    dc.l    0
  1405. oldsp    dc.l    0
  1406. IntBase    dc.l    0
  1407. GfxBase    dc.l    0
  1408. DosBase    dc.l    0
  1409. tracefh    dc.l    0
  1410. tracewin    dc.b    'con:290/0/320/200/Trace/Edit',0
  1411.     even
  1412. reqname    dc.b    'con:100/0/300/100/Enter filename',0
  1413.     even
  1414. WinTitle    dc.b    '6502 emulator',0
  1415.     even
  1416. IntName    dc.b    'intuition.library',0
  1417.     even
  1418. GfxName    dc.b    'graphics.library',0
  1419.     even
  1420. DosName    dc.b    'dos.library',0
  1421.     even
  1422.  
  1423. namebuffer    dcb.b    200,0
  1424.  
  1425. ;==========================================================================
  1426.  
  1427. tracesr    dc.w    0
  1428. tracesp    dc.w    0
  1429. traceacc    dc.w    0
  1430. tracex    dc.w    0
  1431. tracey    dc.w    0
  1432. tracepc    dc.w    0
  1433. tracedata    dc.w    0
  1434.  
  1435.  
  1436.  
  1437. tracestr    dc.b    ' SR  SP  A   X   Y    PC',$a
  1438.     dc.b    ' %02x  %02x  %02x  %02x  %02x  %04x  '
  1439. traceop    dc.b    '    '
  1440. traceadr    dc.b    '                     ',0
  1441.     even
  1442. traceoutput    dcb.b    100,0
  1443.     
  1444.  
  1445. ;==========================================================================
  1446.  
  1447. myNewWindow
  1448. mynw_LeftEdge    dc.w    0
  1449. mynw_TopEdge    dc.w    0
  1450. mynw_Width    dc.w    Columns*8+$18
  1451. mynw_Height    dc.w    Rows*8+$18
  1452. mynw_DetailPen    dc.b    -1
  1453. mynw_BlockPen    dc.b    -1
  1454. mynw_IDCMPFlags    dc.l    IDCMP_VANILLAKEY|IDCMP_CLOSEWINDOW|IDCMP_MENUPICK|IDCMP_INTUITICKS
  1455. mynw_Flags    dc.l    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_ACTIVATE|WFLG_NOCAREREFRESH|WFLG_SMART_REFRESH
  1456. mynw_FirstGadget     dc.l    0
  1457. mynw_CheckMark    dc.l    0
  1458. mynw_Title    dc.l    WinTitle
  1459. mynw_Screen    dc.l    0
  1460. mynw_BitMap    dc.l    0
  1461. mynw_MinWidth    dc.w    0
  1462. mynw_MinHeight    dc.w    0
  1463. mynw_MaxWidth    dc.w    0
  1464. mynw_MaxHeight    dc.w    0
  1465. mynw_Type    dc.w    WBENCHSCREEN
  1466.  
  1467.  
  1468. ;==========================================================================
  1469. ; menu structures
  1470. ;==========================================================================
  1471. menuname0    dc.b    'Project ',0
  1472.     even
  1473.  
  1474.  
  1475. menu0    dc.l    0
  1476.     dc.w    0,0,100,0
  1477.     dc.w    1
  1478.     dc.l    menuname0
  1479.     dc.l    item00
  1480.     dcb.w    4,0
  1481.  
  1482. ;==========================================================================
  1483.  
  1484. item00    dc.l    item01
  1485.     dc.w    0,0,100,9
  1486.     dc.w    $40|$10|$2|$4
  1487.     dc.l    0
  1488.     dc.l    itext0
  1489.     dc.l    0
  1490.     dc.b    'L'
  1491.     dc.b    0
  1492.     dc.l    0
  1493.     dc.w    0
  1494.  
  1495. item01    dc.l    item02
  1496.     dc.w    0,10,100,9
  1497.     dc.w    $40|$14|$2|$4
  1498.     dc.l    0
  1499.     dc.l    itext1
  1500.     dc.l    0
  1501.     dc.b    'S'
  1502.     dc.b    0
  1503.     dc.l    0
  1504.     dc.w    0
  1505.  
  1506. item02    dc.l    item03
  1507.     dc.w    0,20,100,9
  1508. traceonoff    dc.w    $40|$10|$2|$1|$8|$4
  1509.     dc.l    0
  1510.     dc.l    itext2
  1511.     dc.l    0
  1512.     dc.b    'T'
  1513.     dc.b    0
  1514.     dc.l    0
  1515.     dc.w    0
  1516.  
  1517. item03    dc.l    item04
  1518.     dc.w    0,30,100,9
  1519.     dc.w    $40|$10|$2|$4
  1520.     dc.l    0
  1521.     dc.l    itext3
  1522.     dc.l    0
  1523.     dc.b    'Q'
  1524.     dc.b    0
  1525.     dc.l    0
  1526.     dc.w    0
  1527.     
  1528. item04    dc.l    item05
  1529.     dc.w    0,40,100,9
  1530.     dc.w    $40|$10|$2|$4
  1531.     dc.l    0
  1532.     dc.l    itext4
  1533.     dc.l    0
  1534.     dc.b    'E'
  1535.     dc.b    0
  1536.     dc.l    0
  1537.     dc.w    0
  1538.     
  1539. item05    dc.l    0
  1540.     dc.w    0,50,200,9
  1541.     dc.w    $40|$10|$2|$4
  1542.     dc.l    0
  1543.     dc.l    itext5
  1544.     dc.l    0
  1545.     dc.b    'W'
  1546.     dc.b    0
  1547.     dc.l    0
  1548.     dc.w    0
  1549.  
  1550. ;==========================================================================
  1551.  
  1552. itext0    dc.b    2,1
  1553.     dc.b    1
  1554.     dc.b    0    
  1555.     dc.w    0,0
  1556.     dc.l    0
  1557.     dc.l    text0
  1558.     dc.l    0
  1559. itext1    dc.b    2,1
  1560.     dc.b    1
  1561.     dc.b    0    
  1562.     dc.w    0,0
  1563.     dc.l    0
  1564.     dc.l    text1
  1565.     dc.l    0
  1566. itext2    dc.b    2,1
  1567.     dc.b    1
  1568.     dc.b    0
  1569.     dc.w    20,0
  1570.     dc.l    0
  1571.     dc.l    text2
  1572.     dc.l    0
  1573. itext3    dc.b    2,1
  1574.     dc.b    1
  1575.     dc.b    0    
  1576.     dc.w    0,0
  1577.     dc.l    0
  1578.     dc.l    text3
  1579.     dc.l    0
  1580. itext4    dc.b    2,1
  1581.     dc.b    1
  1582.     dc.b    0    
  1583.     dc.w    0,0
  1584.     dc.l    0
  1585.     dc.l    text4
  1586.     dc.l    0
  1587. itext5    dc.b    2,1
  1588.     dc.b    1
  1589.     dc.b    0    
  1590.     dc.w    0,0
  1591.     dc.l    0
  1592.     dc.l    text5
  1593.     dc.l    0
  1594.  
  1595. ;==========================================================================
  1596.  
  1597. text0    dc.b    'Load ',0
  1598.     even
  1599. text1    dc.b    'Save ',0
  1600.     even
  1601. text2    dc.b    'Trace ',0
  1602.     even
  1603. text3    dc.b    'Quit ',0
  1604.     even
  1605. text4    dc.b    'Edit ',0
  1606.     even
  1607. text5    dc.b    'Single-step ',0
  1608.     even
  1609.     
  1610.  
  1611. ;==========================================================================
  1612. menutable
  1613.     dc.b    0,0
  1614.     dc.l    menuload
  1615.     dc.b    0,1
  1616.     dc.l    menusave
  1617.     dc.b    0,2
  1618.     dc.l    menutrace
  1619.     dc.b    0,3
  1620.     dc.l    Cleanup
  1621.     dc.b    0,4
  1622.     dc.l    menuedit
  1623.     dc.b    0,5
  1624.     dc.l    menusstep
  1625.     dc.b    -1,-1
  1626.     dc.l    0
  1627.     
  1628.  
  1629.  
  1630. ;==========================================================================
  1631. ;Jumptables
  1632. ;==========================================================================
  1633.  
  1634. readpages    dc.l    read_normaladr        ;0
  1635.     dc.l    read_normaladr        ;1
  1636.     dc.l    read_normaladr        ;2
  1637.     dc.l    read_normaladr        ;3
  1638.     dc.l    read_normaladr        ;4
  1639.     dc.l    read_normaladr        ;5
  1640.     dc.l    read_normaladr        ;6
  1641.     dc.l    read_normaladr        ;7
  1642.     dc.l    read_normaladr        ;8
  1643.     dc.l    read_normaladr        ;9
  1644.     dc.l    read_normaladr        ;a
  1645.     dc.l    read_normaladr        ;b
  1646.     dc.l    read_normaladr        ;c
  1647.     dc.l    read_normaladr        ;d
  1648.     dc.l    read_normaladr        ;e
  1649.     dc.l    read_normaladr        ;f
  1650.     dc.l    read_normaladr        ;10
  1651.     dc.l    read_normaladr        ;11
  1652.     dc.l    read_normaladr        ;12
  1653.     dc.l    read_normaladr        ;13
  1654.     dc.l    read_normaladr        ;14
  1655.     dc.l    read_normaladr        ;15
  1656.     dc.l    read_normaladr        ;16
  1657.     dc.l    read_normaladr        ;17
  1658.     dc.l    read_normaladr        ;18
  1659.     dc.l    read_normaladr        ;19
  1660.     dc.l    read_normaladr        ;1a
  1661.     dc.l    read_normaladr        ;1b
  1662.     dc.l    read_normaladr        ;1c
  1663.     dc.l    read_normaladr        ;1d
  1664.     dc.l    read_normaladr        ;1e
  1665.     dc.l    read_normaladr        ;1f
  1666.     dc.l    read_normaladr        ;20
  1667.     dc.l    read_normaladr        ;21
  1668.     dc.l    read_normaladr        ;22
  1669.     dc.l    read_normaladr        ;23
  1670.     dc.l    read_normaladr        ;24
  1671.     dc.l    read_normaladr        ;25
  1672.     dc.l    read_normaladr        ;26
  1673.     dc.l    read_normaladr        ;27
  1674.     dc.l    read_normaladr        ;28
  1675.     dc.l    read_normaladr        ;29
  1676.     dc.l    read_normaladr        ;2a
  1677.     dc.l    read_normaladr        ;2b
  1678.     dc.l    read_normaladr        ;2c
  1679.     dc.l    read_normaladr        ;2d
  1680.     dc.l    read_normaladr        ;2e
  1681.     dc.l    read_normaladr        ;2f
  1682.     dc.l    read_normaladr        ;30
  1683.     dc.l    read_normaladr        ;31
  1684.     dc.l    read_normaladr        ;32
  1685.     dc.l    read_normaladr        ;33
  1686.     dc.l    read_normaladr        ;34
  1687.     dc.l    read_normaladr        ;35
  1688.     dc.l    read_normaladr        ;36
  1689.     dc.l    read_normaladr        ;37
  1690.     dc.l    read_normaladr        ;38
  1691.     dc.l    read_normaladr        ;39
  1692.     dc.l    read_normaladr        ;3a
  1693.     dc.l    read_normaladr        ;3b
  1694.     dc.l    read_normaladr        ;3c
  1695.     dc.l    read_normaladr        ;3d
  1696.     dc.l    read_normaladr        ;3e
  1697.     dc.l    read_normaladr        ;3f
  1698.     dc.l    read_normaladr        ;40
  1699.     dc.l    read_normaladr        ;41
  1700.     dc.l    read_normaladr        ;42
  1701.     dc.l    read_normaladr        ;43
  1702.     dc.l    read_normaladr        ;44
  1703.     dc.l    read_normaladr        ;45
  1704.     dc.l    read_normaladr        ;46
  1705.     dc.l    read_normaladr        ;47
  1706.     dc.l    read_normaladr        ;48
  1707.     dc.l    read_normaladr        ;49
  1708.     dc.l    read_normaladr        ;4a
  1709.     dc.l    read_normaladr        ;4b
  1710.     dc.l    read_normaladr        ;4c
  1711.     dc.l    read_normaladr        ;4d
  1712.     dc.l    read_normaladr        ;4e
  1713.     dc.l    read_normaladr        ;4f
  1714.     dc.l    read_normaladr        ;50
  1715.     dc.l    read_normaladr        ;51
  1716.     dc.l    read_normaladr        ;52
  1717.     dc.l    read_normaladr        ;53
  1718.     dc.l    read_normaladr        ;54
  1719.     dc.l    read_normaladr        ;55
  1720.     dc.l    read_normaladr        ;56
  1721.     dc.l    read_normaladr        ;57
  1722.     dc.l    read_normaladr        ;58
  1723.     dc.l    read_normaladr        ;59
  1724.     dc.l    read_normaladr        ;5a
  1725.     dc.l    read_normaladr        ;5b
  1726.     dc.l    read_normaladr        ;5c
  1727.     dc.l    read_normaladr        ;5d
  1728.     dc.l    read_normaladr        ;5e
  1729.     dc.l    read_normaladr        ;5f
  1730.     dc.l    read_normaladr        ;60
  1731.     dc.l    read_normaladr        ;61
  1732.     dc.l    read_normaladr        ;62
  1733.     dc.l    read_normaladr        ;63
  1734.     dc.l    read_normaladr        ;64
  1735.     dc.l    read_normaladr        ;65
  1736.     dc.l    read_normaladr        ;66
  1737.     dc.l    read_normaladr        ;67
  1738.     dc.l    read_normaladr        ;68
  1739.     dc.l    read_normaladr        ;69
  1740.     dc.l    read_normaladr        ;6a
  1741.     dc.l    read_normaladr        ;6b
  1742.     dc.l    read_normaladr        ;6c
  1743.     dc.l    read_normaladr        ;6d
  1744.     dc.l    read_normaladr        ;6e
  1745.     dc.l    read_normaladr        ;6f
  1746.     dc.l    read_normaladr        ;70
  1747.     dc.l    read_normaladr        ;71
  1748.     dc.l    read_normaladr        ;72
  1749.     dc.l    read_normaladr        ;73
  1750.     dc.l    read_normaladr        ;74
  1751.     dc.l    read_normaladr        ;75
  1752.     dc.l    read_normaladr        ;76
  1753.     dc.l    read_normaladr        ;77
  1754.     dc.l    read_normaladr        ;78
  1755.     dc.l    read_normaladr        ;79
  1756.     dc.l    read_normaladr        ;7a
  1757.     dc.l    read_normaladr        ;7b
  1758.     dc.l    read_normaladr        ;7c
  1759.     dc.l    read_normaladr        ;7d
  1760.     dc.l    read_normaladr        ;7e
  1761.     dc.l    read_normaladr        ;7f
  1762.     dc.l    read_normaladr        ;80
  1763.     dc.l    read_normaladr        ;81
  1764.     dc.l    read_normaladr        ;82
  1765.     dc.l    read_normaladr        ;83
  1766.     dc.l    read_normaladr        ;84
  1767.     dc.l    read_normaladr        ;85
  1768.     dc.l    read_normaladr        ;86
  1769.     dc.l    read_normaladr        ;87
  1770.     dc.l    read_normaladr        ;88
  1771.     dc.l    read_normaladr        ;89
  1772.     dc.l    read_normaladr        ;8a
  1773.     dc.l    read_normaladr        ;8b
  1774.     dc.l    read_normaladr        ;8c
  1775.     dc.l    read_normaladr        ;8d
  1776.     dc.l    read_normaladr        ;8e
  1777.     dc.l    read_normaladr        ;8f
  1778.     dc.l    read_normaladr        ;90
  1779.     dc.l    read_normaladr        ;91
  1780.     dc.l    read_normaladr        ;92
  1781.     dc.l    read_normaladr        ;93
  1782.     dc.l    read_normaladr        ;94
  1783.     dc.l    read_normaladr        ;95
  1784.     dc.l    read_normaladr        ;96
  1785.     dc.l    read_normaladr        ;97
  1786.     dc.l    read_normaladr        ;98
  1787.     dc.l    read_normaladr        ;99
  1788.     dc.l    read_normaladr        ;9a
  1789.     dc.l    read_normaladr        ;9b
  1790.     dc.l    read_normaladr        ;9c
  1791.     dc.l    read_normaladr        ;9d
  1792.     dc.l    read_normaladr        ;9e
  1793.     dc.l    read_normaladr        ;9f
  1794.     dc.l    read_normaladr        ;a0
  1795.     dc.l    read_normaladr        ;a1
  1796.     dc.l    read_normaladr        ;a2
  1797.     dc.l    read_normaladr        ;a3
  1798.     dc.l    read_normaladr        ;a4
  1799.     dc.l    read_normaladr        ;a5
  1800.     dc.l    read_normaladr        ;a6
  1801.     dc.l    read_normaladr        ;a7
  1802.     dc.l    read_normaladr        ;a8
  1803.     dc.l    read_normaladr        ;a9
  1804.     dc.l    read_normaladr        ;aa
  1805.     dc.l    read_normaladr        ;ab
  1806.     dc.l    read_normaladr        ;ac
  1807.     dc.l    read_normaladr        ;ad
  1808.     dc.l    read_normaladr        ;ae
  1809.     dc.l    read_normaladr        ;af
  1810.     dc.l    read_normaladr        ;b0
  1811.     dc.l    read_normaladr        ;b1
  1812.     dc.l    read_normaladr        ;b2
  1813.     dc.l    read_normaladr        ;b3
  1814.     dc.l    read_normaladr        ;b4
  1815.     dc.l    read_normaladr        ;b5
  1816.     dc.l    read_normaladr        ;b6
  1817.     dc.l    read_normaladr        ;b7
  1818.     dc.l    read_normaladr        ;b8
  1819.     dc.l    read_normaladr        ;b9
  1820.     dc.l    read_normaladr        ;ba
  1821.     dc.l    read_normaladr        ;bb
  1822.     dc.l    read_normaladr        ;bc
  1823.     dc.l    read_normaladr        ;bd
  1824.     dc.l    read_normaladr        ;be
  1825.     dc.l    read_normaladr        ;bf
  1826.     dc.l    read_normaladr        ;c0
  1827.     dc.l    read_normaladr        ;c1
  1828.     dc.l    read_normaladr        ;c2
  1829.     dc.l    read_normaladr        ;c3
  1830.     dc.l    read_normaladr        ;c4
  1831.     dc.l    read_normaladr        ;c5
  1832.     dc.l    read_normaladr        ;c6
  1833.     dc.l    read_normaladr        ;c7
  1834.     dc.l    read_normaladr        ;c8
  1835.     dc.l    read_normaladr        ;c9
  1836.     dc.l    read_normaladr        ;ca
  1837.     dc.l    read_normaladr        ;cb
  1838.     dc.l    read_normaladr        ;cc
  1839.     dc.l    read_normaladr        ;cd
  1840.     dc.l    read_normaladr        ;ce
  1841.     dc.l    read_normaladr        ;cf
  1842.     dc.l    read_normaladr        ;d0
  1843.     dc.l    read_normaladr        ;d1
  1844.     dc.l    read_normaladr        ;d2
  1845.     dc.l    read_normaladr        ;d3
  1846.     dc.l    read_normaladr        ;d4
  1847.     dc.l    read_normaladr        ;d5
  1848.     dc.l    read_normaladr        ;d6
  1849.     dc.l    read_normaladr        ;d7
  1850.     dc.l    read_normaladr        ;d8
  1851.     dc.l    read_normaladr        ;d9
  1852.     dc.l    read_normaladr        ;da
  1853.     dc.l    read_normaladr        ;db
  1854.     dc.l    read_ioadr        ;dc
  1855.     dc.l    read_normaladr        ;dd
  1856.     dc.l    read_normaladr        ;de
  1857.     dc.l    read_normaladr        ;df
  1858.     dc.l    read_normaladr        ;e0
  1859.     dc.l    read_normaladr        ;e1
  1860.     dc.l    read_normaladr        ;e2
  1861.     dc.l    read_normaladr        ;e3
  1862.     dc.l    read_normaladr        ;e4
  1863.     dc.l    read_normaladr        ;e5
  1864.     dc.l    read_normaladr        ;e6
  1865.     dc.l    read_normaladr        ;e7
  1866.     dc.l    read_normaladr        ;e8
  1867.     dc.l    read_normaladr        ;e9
  1868.     dc.l    read_normaladr        ;ea
  1869.     dc.l    read_normaladr        ;eb
  1870.     dc.l    read_normaladr        ;ec
  1871.     dc.l    read_normaladr        ;ed
  1872.     dc.l    read_normaladr        ;ee
  1873.     dc.l    read_normaladr        ;ef
  1874.     dc.l    read_normaladr        ;f0
  1875.     dc.l    read_normaladr        ;f1
  1876.     dc.l    read_normaladr        ;f2
  1877.     dc.l    read_normaladr        ;f3
  1878.     dc.l    read_normaladr        ;f4
  1879.     dc.l    read_normaladr        ;f5
  1880.     dc.l    read_normaladr        ;f6
  1881.     dc.l    read_normaladr        ;f7
  1882.     dc.l    read_normaladr        ;f8
  1883.     dc.l    read_normaladr        ;f9
  1884.     dc.l    read_normaladr        ;fa
  1885.     dc.l    read_normaladr        ;fb
  1886.     dc.l    read_normaladr        ;fc
  1887.     dc.l    read_normaladr        ;fd
  1888.     dc.l    read_normaladr        ;fe
  1889.     dc.l    read_normaladr        ;ff
  1890.  
  1891.  
  1892. writepages    dc.l    write_normaladr        ;0
  1893.     dc.l    write_normaladr        ;1
  1894.     dc.l    write_normaladr        ;2
  1895.     dc.l    write_normaladr        ;3
  1896.     dc.l    write_screenadr        ;4
  1897.     dc.l    write_screenadr        ;5
  1898.     dc.l    write_screenadr        ;6
  1899.     dc.l    write_screenadr        ;7
  1900.     dc.l    write_normaladr        ;8
  1901.     dc.l    write_normaladr        ;9
  1902.     dc.l    write_normaladr        ;a
  1903.     dc.l    write_normaladr        ;b
  1904.     dc.l    write_normaladr        ;c
  1905.     dc.l    write_normaladr        ;d
  1906.     dc.l    write_normaladr        ;e
  1907.     dc.l    write_normaladr        ;f
  1908.     dc.l    write_normaladr        ;10
  1909.     dc.l    write_normaladr        ;11
  1910.     dc.l    write_normaladr        ;12
  1911.     dc.l    write_normaladr        ;13
  1912.     dc.l    write_normaladr        ;14
  1913.     dc.l    write_normaladr        ;15
  1914.     dc.l    write_normaladr        ;16
  1915.     dc.l    write_normaladr        ;17
  1916.     dc.l    write_normaladr        ;18
  1917.     dc.l    write_normaladr        ;19
  1918.     dc.l    write_normaladr        ;1a
  1919.     dc.l    write_normaladr        ;1b
  1920.     dc.l    write_normaladr        ;1c
  1921.     dc.l    write_normaladr        ;1d
  1922.     dc.l    write_normaladr        ;1e
  1923.     dc.l    write_normaladr        ;1f
  1924.     dc.l    write_normaladr        ;20
  1925.     dc.l    write_normaladr        ;21
  1926.     dc.l    write_normaladr        ;22
  1927.     dc.l    write_normaladr        ;23
  1928.     dc.l    write_normaladr        ;24
  1929.     dc.l    write_normaladr        ;25
  1930.     dc.l    write_normaladr        ;26
  1931.     dc.l    write_normaladr        ;27
  1932.     dc.l    write_normaladr        ;28
  1933.     dc.l    write_normaladr        ;29
  1934.     dc.l    write_normaladr        ;2a
  1935.     dc.l    write_normaladr        ;2b
  1936.     dc.l    write_normaladr        ;2c
  1937.     dc.l    write_normaladr        ;2d
  1938.     dc.l    write_normaladr        ;2e
  1939.     dc.l    write_normaladr        ;2f
  1940.     dc.l    write_normaladr        ;30
  1941.     dc.l    write_normaladr        ;31
  1942.     dc.l    write_normaladr        ;32
  1943.     dc.l    write_normaladr        ;33
  1944.     dc.l    write_normaladr        ;34
  1945.     dc.l    write_normaladr        ;35
  1946.     dc.l    write_normaladr        ;36
  1947.     dc.l    write_normaladr        ;37
  1948.     dc.l    write_normaladr        ;38
  1949.     dc.l    write_normaladr        ;39
  1950.     dc.l    write_normaladr        ;3a
  1951.     dc.l    write_normaladr        ;3b
  1952.     dc.l    write_normaladr        ;3c
  1953.     dc.l    write_normaladr        ;3d
  1954.     dc.l    write_normaladr        ;3e
  1955.     dc.l    write_normaladr        ;3f
  1956.     dc.l    write_normaladr        ;40
  1957.     dc.l    write_normaladr        ;41
  1958.     dc.l    write_normaladr        ;42
  1959.     dc.l    write_normaladr        ;43
  1960.     dc.l    write_normaladr        ;44
  1961.     dc.l    write_normaladr        ;45
  1962.     dc.l    write_normaladr        ;46
  1963.     dc.l    write_normaladr        ;47
  1964.     dc.l    write_normaladr        ;48
  1965.     dc.l    write_normaladr        ;49
  1966.     dc.l    write_normaladr        ;4a
  1967.     dc.l    write_normaladr        ;4b
  1968.     dc.l    write_normaladr        ;4c
  1969.     dc.l    write_normaladr        ;4d
  1970.     dc.l    write_normaladr        ;4e
  1971.     dc.l    write_normaladr        ;4f
  1972.     dc.l    write_normaladr        ;50
  1973.     dc.l    write_normaladr        ;51
  1974.     dc.l    write_normaladr        ;52
  1975.     dc.l    write_normaladr        ;53
  1976.     dc.l    write_normaladr        ;54
  1977.     dc.l    write_normaladr        ;55
  1978.     dc.l    write_normaladr        ;56
  1979.     dc.l    write_normaladr        ;57
  1980.     dc.l    write_normaladr        ;58
  1981.     dc.l    write_normaladr        ;59
  1982.     dc.l    write_normaladr        ;5a
  1983.     dc.l    write_normaladr        ;5b
  1984.     dc.l    write_normaladr        ;5c
  1985.     dc.l    write_normaladr        ;5d
  1986.     dc.l    write_normaladr        ;5e
  1987.     dc.l    write_normaladr        ;5f
  1988.     dc.l    write_normaladr        ;60
  1989.     dc.l    write_normaladr        ;61
  1990.     dc.l    write_normaladr        ;62
  1991.     dc.l    write_normaladr        ;63
  1992.     dc.l    write_normaladr        ;64
  1993.     dc.l    write_normaladr        ;65
  1994.     dc.l    write_normaladr        ;66
  1995.     dc.l    write_normaladr        ;67
  1996.     dc.l    write_normaladr        ;68
  1997.     dc.l    write_normaladr        ;69
  1998.     dc.l    write_normaladr        ;6a
  1999.     dc.l    write_normaladr        ;6b
  2000.     dc.l    write_normaladr        ;6c
  2001.     dc.l    write_normaladr        ;6d
  2002.     dc.l    write_normaladr        ;6e
  2003.     dc.l    write_normaladr        ;6f
  2004.     dc.l    write_normaladr        ;70
  2005.     dc.l    write_normaladr        ;71
  2006.     dc.l    write_normaladr        ;72
  2007.     dc.l    write_normaladr        ;73
  2008.     dc.l    write_normaladr        ;74
  2009.     dc.l    write_normaladr        ;75
  2010.     dc.l    write_normaladr        ;76
  2011.     dc.l    write_normaladr        ;77
  2012.     dc.l    write_normaladr        ;78
  2013.     dc.l    write_normaladr        ;79
  2014.     dc.l    write_normaladr        ;7a
  2015.     dc.l    write_normaladr        ;7b
  2016.     dc.l    write_normaladr        ;7c
  2017.     dc.l    write_normaladr        ;7d
  2018.     dc.l    write_normaladr        ;7e
  2019.     dc.l    write_normaladr        ;7f
  2020.     dc.l    write_normaladr        ;80
  2021.     dc.l    write_normaladr        ;81
  2022.     dc.l    write_normaladr        ;82
  2023.     dc.l    write_normaladr        ;83
  2024.     dc.l    write_normaladr        ;84
  2025.     dc.l    write_normaladr        ;85
  2026.     dc.l    write_normaladr        ;86
  2027.     dc.l    write_normaladr        ;87
  2028.     dc.l    write_normaladr        ;88
  2029.     dc.l    write_normaladr        ;89
  2030.     dc.l    write_normaladr        ;8a
  2031.     dc.l    write_normaladr        ;8b
  2032.     dc.l    write_normaladr        ;8c
  2033.     dc.l    write_normaladr        ;8d
  2034.     dc.l    write_normaladr        ;8e
  2035.     dc.l    write_normaladr        ;8f
  2036.     dc.l    write_normaladr        ;90
  2037.     dc.l    write_normaladr        ;91
  2038.     dc.l    write_normaladr        ;92
  2039.     dc.l    write_normaladr        ;93
  2040.     dc.l    write_normaladr        ;94
  2041.     dc.l    write_normaladr        ;95
  2042.     dc.l    write_normaladr        ;96
  2043.     dc.l    write_normaladr        ;97
  2044.     dc.l    write_normaladr        ;98
  2045.     dc.l    write_normaladr        ;99
  2046.     dc.l    write_normaladr        ;9a
  2047.     dc.l    write_normaladr        ;9b
  2048.     dc.l    write_normaladr        ;9c
  2049.     dc.l    write_normaladr        ;9d
  2050.     dc.l    write_normaladr        ;9e
  2051.     dc.l    write_normaladr        ;9f
  2052.     dc.l    write_normaladr        ;a0
  2053.     dc.l    write_normaladr        ;a1
  2054.     dc.l    write_normaladr        ;a2
  2055.     dc.l    write_normaladr        ;a3
  2056.     dc.l    write_normaladr        ;a4
  2057.     dc.l    write_normaladr        ;a5
  2058.     dc.l    write_normaladr        ;a6
  2059.     dc.l    write_normaladr        ;a7
  2060.     dc.l    write_normaladr        ;a8
  2061.     dc.l    write_normaladr        ;a9
  2062.     dc.l    write_normaladr        ;aa
  2063.     dc.l    write_normaladr        ;ab
  2064.     dc.l    write_normaladr        ;ac
  2065.     dc.l    write_normaladr        ;ad
  2066.     dc.l    write_normaladr        ;ae
  2067.     dc.l    write_normaladr        ;af
  2068.     dc.l    write_normaladr        ;b0
  2069.     dc.l    write_normaladr        ;b1
  2070.     dc.l    write_normaladr        ;b2
  2071.     dc.l    write_normaladr        ;b3
  2072.     dc.l    write_normaladr        ;b4
  2073.     dc.l    write_normaladr        ;b5
  2074.     dc.l    write_normaladr        ;b6
  2075.     dc.l    write_normaladr        ;b7
  2076.     dc.l    write_normaladr        ;b8
  2077.     dc.l    write_normaladr        ;b9
  2078.     dc.l    write_normaladr        ;ba
  2079.     dc.l    write_normaladr        ;bb
  2080.     dc.l    write_normaladr        ;bc
  2081.     dc.l    write_normaladr        ;bd
  2082.     dc.l    write_normaladr        ;be
  2083.     dc.l    write_normaladr        ;bf
  2084.     dc.l    write_normaladr        ;c0
  2085.     dc.l    write_normaladr        ;c1
  2086.     dc.l    write_normaladr        ;c2
  2087.     dc.l    write_normaladr        ;c3
  2088.     dc.l    write_normaladr        ;c4
  2089.     dc.l    write_normaladr        ;c5
  2090.     dc.l    write_normaladr        ;c6
  2091.     dc.l    write_normaladr        ;c7
  2092.     dc.l    write_normaladr        ;c8
  2093.     dc.l    write_normaladr        ;c9
  2094.     dc.l    write_normaladr        ;ca
  2095.     dc.l    write_normaladr        ;cb
  2096.     dc.l    write_normaladr        ;cc
  2097.     dc.l    write_normaladr        ;cd
  2098.     dc.l    write_normaladr        ;ce
  2099.     dc.l    write_normaladr        ;cf
  2100.     dc.l    write_normaladr        ;d0
  2101.     dc.l    write_normaladr        ;d1
  2102.     dc.l    write_normaladr        ;d2
  2103.     dc.l    write_normaladr        ;d3
  2104.     dc.l    write_normaladr        ;d4
  2105.     dc.l    write_normaladr        ;d5
  2106.     dc.l    write_normaladr        ;d6
  2107.     dc.l    write_normaladr        ;d7
  2108.     dc.l    write_normaladr        ;d8
  2109.     dc.l    write_normaladr        ;d9
  2110.     dc.l    write_normaladr        ;da
  2111.     dc.l    write_normaladr        ;db
  2112.     dc.l    write_ioadr        ;dc
  2113.     dc.l    write_normaladr        ;dd
  2114.     dc.l    write_normaladr        ;de
  2115.     dc.l    write_normaladr        ;df
  2116.     dc.l    write_normaladr        ;e0
  2117.     dc.l    write_normaladr        ;e1
  2118.     dc.l    write_normaladr        ;e2
  2119.     dc.l    write_normaladr        ;e3
  2120.     dc.l    write_normaladr        ;e4
  2121.     dc.l    write_normaladr        ;e5
  2122.     dc.l    write_normaladr        ;e6
  2123.     dc.l    write_normaladr        ;e7
  2124.     dc.l    write_normaladr        ;e8
  2125.     dc.l    write_normaladr        ;e9
  2126.     dc.l    write_normaladr        ;ea
  2127.     dc.l    write_normaladr        ;eb
  2128.     dc.l    write_normaladr        ;ec
  2129.     dc.l    write_normaladr        ;ed
  2130.     dc.l    write_normaladr        ;ee
  2131.     dc.l    write_normaladr        ;ef
  2132.     dc.l    write_normaladr        ;f0
  2133.     dc.l    write_normaladr        ;f1
  2134.     dc.l    write_normaladr        ;f2
  2135.     dc.l    write_normaladr        ;f3
  2136.     dc.l    write_normaladr        ;f4
  2137.     dc.l    write_normaladr        ;f5
  2138.     dc.l    write_normaladr        ;f6
  2139.     dc.l    write_normaladr        ;f7
  2140.     dc.l    write_normaladr        ;f8
  2141.     dc.l    write_normaladr        ;f9
  2142.     dc.l    write_normaladr        ;fa
  2143.     dc.l    write_normaladr        ;fb
  2144.     dc.l    write_normaladr        ;fc
  2145.     dc.l    write_normaladr        ;fd
  2146.     dc.l    write_normaladr        ;fe
  2147.     dc.l    write_normaladr        ;ff
  2148.  
  2149.  
  2150. ;format of word is: 1st byte=operation,2nd byte=addressing mode
  2151.  
  2152. optable    dc.w    $0b00            ;00 brk    
  2153.     dc.w    $230a            ;01 ora (,x)        
  2154.     dc.w    $3f00            ;02 jam
  2155.     dc.w    $4b0a            ;03 slo (,x)
  2156.     dc.w    $2204            ;04 nop z
  2157.     dc.w    $2304            ;05 ora z
  2158.     dc.w    $0304            ;06 asl z
  2159.     dc.w    $4b04            ;07 slo z
  2160.     dc.w    $2500            ;08 php
  2161.     dc.w    $2302            ;09 ora #
  2162.     dc.w    $0301            ;0a asl a
  2163.     dc.w    $3902            ;0b anc #
  2164.     dc.w    $2207            ;0c nop xx
  2165.     dc.w    $2307            ;0d ora xx
  2166.     dc.w    $0307            ;0e asl xx
  2167.     dc.w    $4b07            ;0f slo xx
  2168.     dc.w    $0a03            ;10 bpl
  2169.     dc.w    $230b            ;11 ora (),y
  2170.     dc.w    $3f00            ;12 jam
  2171.     dc.w    $4b0b            ;13 slo (),y
  2172.     dc.w    $2205            ;14 nop z,x
  2173.     dc.w    $2305            ;15 ora z,x
  2174.     dc.w    $0305            ;16 asl z,x
  2175.     dc.w    $4b05            ;17 slo z,x
  2176.     dc.w    $0e00            ;18 clc
  2177.     dc.w    $2309            ;19 ora xx,y
  2178.     dc.w    $2200            ;1a nop ??????
  2179.     dc.w    $4b09            ;1b slo xx,y
  2180.     dc.w    $2208            ;1c nop xx,x
  2181.     dc.w    $2308            ;1d ora xx,x
  2182.     dc.w    $0308            ;1e asl xx,x
  2183.     dc.w    $4b08            ;1f slo xx,x
  2184.     dc.w    $1d07            ;20 jsr
  2185.     dc.w    $020a            ;21 and (,x)
  2186.     dc.w    $3f00            ;22 jam
  2187.     dc.w    $430a            ;23 rla (,x)
  2188.     dc.w    $0704            ;24 bit z
  2189.     dc.w    $0204            ;25 and z
  2190.     dc.w    $2804            ;26 rol z
  2191.     dc.w    $4304            ;27 rla z
  2192.     dc.w    $2700            ;28 plp
  2193.     dc.w    $0202            ;29 and #
  2194.     dc.w    $2801            ;2a rol a
  2195.     dc.w    $3902            ;2b anc #
  2196.     dc.w    $0707            ;2c bit xx
  2197.     dc.w    $0207            ;2d and xx
  2198.     dc.w    $2807            ;2e rol xx
  2199.     dc.w    $4307            ;2f rla xx
  2200.     dc.w    $0803            ;30 bmi
  2201.     dc.w    $020b            ;31 and (),y
  2202.     dc.w    $3f00            ;32 jam
  2203.     dc.w    $430b            ;33 rla (),y
  2204.     dc.w    $2205            ;34 nop z,x
  2205.     dc.w    $0205            ;35 and z,x
  2206.     dc.w    $2805            ;36 rol z,x
  2207.     dc.w    $4305            ;37 rla z,x
  2208.     dc.w    $2d00            ;38 sec
  2209.     dc.w    $0205            ;39 and xx,y
  2210.     dc.w    $2200            ;3a nop
  2211.     dc.w    $4305            ;3b rla xx,y
  2212.     dc.w    $2208            ;3c nop xx,x
  2213.     dc.w    $0208            ;3d and xx,x
  2214.     dc.w    $2808            ;3e rol xx,x
  2215.     dc.w    $4308            ;3f rla xx,x
  2216.     dc.w    $2a00            ;40 rti
  2217.     dc.w    $180a            ;41 eor (,x)
  2218.     dc.w    $3f00            ;42 jam
  2219.     dc.w    $4c0a            ;43 sre (,x)
  2220.     dc.w    $2204            ;44 nop z
  2221.     dc.w    $1804            ;45 eor z
  2222.     dc.w    $2104            ;46 lsr z
  2223.     dc.w    $4c04            ;47 sre z
  2224.     dc.w    $2400            ;48 pha
  2225.     dc.w    $1802            ;49 eor #
  2226.     dc.w    $2101            ;4a lsr a
  2227.     dc.w    $3c02            ;4b asr #
  2228.     dc.w    $1c07            ;4c jmp xx
  2229.     dc.w    $1807            ;4d eor xx
  2230.     dc.w    $2107            ;4e lsr xx
  2231.     dc.w    $4c07            ;4f sre xx
  2232.     dc.w    $0c03            ;50 bvc
  2233.     dc.w    $180b            ;51 eor (),y
  2234.     dc.w    $3f00            ;52 jam
  2235.     dc.w    $4c0b            ;53 sre (),y
  2236.     dc.w    $2205            ;54 nop z,x
  2237.     dc.w    $1805            ;55 eor z,x
  2238.     dc.w    $2105            ;56 lsr z,x
  2239.     dc.w    $4c05            ;57 sre z,x
  2240.     dc.w    $1000            ;58 cli
  2241.     dc.w    $1809            ;59 eor xx,y
  2242.     dc.w    $2200            ;5a nop
  2243.     dc.w    $4c09            ;5b sre xx,y
  2244.     dc.w    $2208            ;5c nop xx,x
  2245.     dc.w    $1808            ;5d eor xx,x
  2246.     dc.w    $2108            ;5e lsr xx,x
  2247.     dc.w    $4c08            ;5f sre xx,x
  2248.     dc.w    $2b00            ;60 rts
  2249.     dc.w    $010a            ;61 adc (,x)
  2250.     dc.w    $3f00            ;62 jam
  2251.     dc.w    $440a            ;63 rra (,x)
  2252.     dc.w    $2200            ;64 nop z
  2253.     dc.w    $0104            ;65 adc z
  2254.     dc.w    $2904            ;66 ror z
  2255.     dc.w    $4404            ;67 rra z
  2256.     dc.w    $2600            ;68 pla
  2257.     dc.w    $0102            ;69 adc #
  2258.     dc.w    $2901            ;6a ror a
  2259.     dc.w    $3b02            ;6b arr #
  2260.     dc.w    $1c0c            ;6c jmp ()
  2261.     dc.w    $0107            ;6d adc xx
  2262.     dc.w    $2907            ;6e ror xx
  2263.     dc.w    $4407            ;6f rra xx
  2264.     dc.w    $0d03            ;70 bvs
  2265.     dc.w    $010b            ;71 adc (),y
  2266.     dc.w    $3f00            ;72 jam
  2267.     dc.w    $440b            ;73 rra (),y
  2268.     dc.w    $2205            ;74 nop z,x
  2269.     dc.w    $0105            ;75 adc z,x
  2270.     dc.w    $2905            ;76 ror z,x
  2271.     dc.w    $4405            ;77 rra z,x
  2272.     dc.w    $2f00            ;78 sei
  2273.     dc.w    $0109            ;79 adc xx,y
  2274.     dc.w    $2200            ;7a nop
  2275.     dc.w    $4409            ;7b rra xx,y
  2276.     dc.w    $2208            ;7c nop xx,x
  2277.     dc.w    $0108            ;7d adc xx,x
  2278.     dc.w    $2908            ;7e ror xx,x
  2279.     dc.w    $4408            ;7f rra xx,x
  2280.     dc.w    $2202            ;80 nop #
  2281.     dc.w    $300a            ;81 sta (,x)
  2282.     dc.w    $2202            ;82 nop #
  2283.     dc.w    $450a            ;83 sax (,x)
  2284.     dc.w    $3204            ;84 sty z
  2285.     dc.w    $3004            ;85 sta z
  2286.     dc.w    $3104            ;86 stx z
  2287.     dc.w    $4504            ;87 sax z
  2288.     dc.w    $1700            ;88 dey
  2289.     dc.w    $2202            ;89 nop #
  2290.     dc.w    $3600            ;8a txa
  2291.     dc.w    $3a02            ;8b ane #
  2292.     dc.w    $3207            ;8c sty xx
  2293.     dc.w    $3007            ;8d sta xx
  2294.     dc.w    $3107            ;8e stx xx
  2295.     dc.w    $4507            ;8f sax xx
  2296.     dc.w    $0403            ;90 bcc
  2297.     dc.w    $300b            ;91 sta (),y
  2298.     dc.w    $3f00            ;92 jam
  2299.     dc.w    $4708            ;93 sha xx,x
  2300.     dc.w    $3205            ;94 sty z,x
  2301.     dc.w    $3005            ;95 sta z,x
  2302.     dc.w    $3106            ;96 stx z,y
  2303.     dc.w    $4506            ;97 sax z,y
  2304.     dc.w    $3800            ;98 tya
  2305.     dc.w    $3009            ;99 sta xx,y
  2306.     dc.w    $3700            ;9a txs
  2307.     dc.w    $4809            ;9b shs xx,y
  2308.     dc.w    $4a09            ;9c shy xx,y
  2309.     dc.w    $3008            ;9d sta xx,x
  2310.     dc.w    $4908            ;9e shx xx,x
  2311.     dc.w    $4709            ;9f sha xx,y
  2312.     dc.w    $2002            ;a0 ldy #
  2313.     dc.w    $1e0a            ;a1 lda (,x)
  2314.     dc.w    $1f02            ;a2 ldx #
  2315.     dc.w    $410a            ;a3 lax (,x)
  2316.     dc.w    $2004            ;a4 ldy z
  2317.     dc.w    $1e04            ;a5 lda z
  2318.     dc.w    $1f04            ;a6 ldx z
  2319.     dc.w    $4104            ;a7 lax z
  2320.     dc.w    $3400            ;a8 tay
  2321.     dc.w    $1e02            ;a9 lda #
  2322.     dc.w    $3300            ;aa tax
  2323.     dc.w    $4202            ;ab lxa #
  2324.     dc.w    $2007            ;ac ldy xx
  2325.     dc.w    $1e07            ;ad lda xx
  2326.     dc.w    $1f07            ;ae ldx xx
  2327.     dc.w    $4107            ;af lax xx
  2328.     dc.w    $0503            ;b0 bcs
  2329.     dc.w    $1e0b            ;b1 lda (),y
  2330.     dc.w    $3f00            ;b2 jam
  2331.     dc.w    $410b            ;b3 lax (),y
  2332.     dc.w    $2005            ;b4 ldy z,x
  2333.     dc.w    $1e05            ;b5 lda z,x
  2334.     dc.w    $1f06            ;b6 ldx z,y
  2335.     dc.w    $4106            ;b7 lax z,y
  2336.     dc.w    $1100            ;b8 clv
  2337.     dc.w    $2009            ;b9 lda xx,y
  2338.     dc.w    $3500            ;ba tsx
  2339.     dc.w    $4009            ;bb lae xx,y
  2340.     dc.w    $2008            ;bc ldy xx,x
  2341.     dc.w    $1e08            ;bd lda xx,x
  2342.     dc.w    $1f09            ;be ldx xx,y
  2343.     dc.w    $4109            ;bf lax xx,y
  2344.     dc.w    $1402            ;c0 cpy #
  2345.     dc.w    $120a            ;c1 cmp (,x)
  2346.     dc.w    $2202            ;c2 nop #
  2347.     dc.w    $3d0a            ;c3 dcp (,x)
  2348.     dc.w    $1404            ;c4 cpy z
  2349.     dc.w    $1204            ;c5 cmp z
  2350.     dc.w    $1504            ;c6 dec z
  2351.     dc.w    $3d04            ;c7 dcp z
  2352.     dc.w    $1b00            ;c8 iny
  2353.     dc.w    $1202            ;c9 cmp #
  2354.     dc.w    $1600            ;ca dex
  2355.     dc.w    $4602            ;cb sbx #
  2356.     dc.w    $1407            ;cc cpy xx
  2357.     dc.w    $1207            ;cd cmp xx
  2358.     dc.w    $1507            ;ce dec xx
  2359.     dc.w    $3d07            ;cf dcp xx
  2360.     dc.w    $0903            ;d0 bne
  2361.     dc.w    $120b            ;d1 cmp (),y
  2362.     dc.w    $3f00            ;d2 jam
  2363.     dc.w    $3d0b            ;d3 dcp (),y
  2364.     dc.w    $2206            ;d4 nop z,x
  2365.     dc.w    $1205            ;d5 cmp z,x
  2366.     dc.w    $1505            ;d6 dec z,x
  2367.     dc.w    $3d05            ;d7 dcp z,x
  2368.     dc.w    $0f00            ;d8 cld
  2369.     dc.w    $1209            ;d9 cmp xx,y
  2370.     dc.w    $2200            ;da nop
  2371.     dc.w    $3d09            ;db dcp xx,y
  2372.     dc.w    $2208            ;dc nop xx,x
  2373.     dc.w    $1208            ;dd cmp xx,x
  2374.     dc.w    $1508            ;de dec xx,x
  2375.     dc.w    $3d08            ;df dcp xx,x
  2376.     dc.w    $1302            ;e0 cpx #
  2377.     dc.w    $2c0a            ;e1 sbc (,x)
  2378.     dc.w    $2202            ;e2 nop #
  2379.     dc.w    $3e0a            ;e3 isb (,x)
  2380.     dc.w    $1304            ;e4 cpx z
  2381.     dc.w    $2c04            ;e5 sbc z
  2382.     dc.w    $1904            ;e6 inc z
  2383.     dc.w    $3e04            ;e7 isb z
  2384.     dc.w    $1a00            ;e8 inx
  2385.     dc.w    $2c02            ;e9 sbc #
  2386.     dc.w    $2200            ;ea nop
  2387.     dc.w    $2c02            ;eb sbc #
  2388.     dc.w    $1307            ;ec cpx xx
  2389.     dc.w    $2c07            ;ed sbc xx
  2390.     dc.w    $1907            ;ee inc xx
  2391.     dc.w    $3e07            ;ef isb xx
  2392.     dc.w    $0603            ;f0 beq
  2393.     dc.w    $2c0b            ;f1 sbc (),y
  2394.     dc.w    $3f00            ;f2 jam
  2395.     dc.w    $3e0b            ;f3 isb (),y
  2396.     dc.w    $2205            ;f4 nop z,x
  2397.     dc.w    $2c05            ;f5 sbc z,x
  2398.     dc.w    $1905            ;f6 inc z,x
  2399.     dc.w    $3e05            ;f7 isb z,x
  2400.     dc.w    $2e00            ;f8 sed
  2401.     dc.w    $2c09            ;f9 sbc xx,y
  2402.     dc.w    $2200            ;fa nop
  2403.     dc.w    $3e09            ;fb isb xx,y
  2404.     dc.w    $2208            ;fc nop xx,x
  2405.     dc.w    $2c08            ;fd sbc xx,x
  2406.     dc.w    $1908            ;fe inc xx,x
  2407.     dc.w    $3e08            ;ff isb xx,x
  2408.  
  2409.  
  2410. ;==========================================================================
  2411.  
  2412.  
  2413. instructions    dc.l    illegal65        ;00
  2414.     dc.l    adc65            ;01
  2415.     dc.l    and65            ;02
  2416.     dc.l    asl65            ;03
  2417.     dc.l    bcc65            ;04
  2418.     dc.l    bcs65            ;05
  2419.     dc.l    beq65            ;06
  2420.     dc.l    bit65            ;07
  2421.     dc.l    bmi65            ;08
  2422.     dc.l    bne65            ;09
  2423.     dc.l    bpl65            ;0a
  2424.     dc.l    brk65            ;0b
  2425.     dc.l    bvc65            ;0c
  2426.     dc.l    bvs65            ;0d
  2427.     dc.l    clc65            ;0e
  2428.     dc.l    cld65            ;0f
  2429.     dc.l    cli65            ;10
  2430.     dc.l    clv65            ;11
  2431.     dc.l    cmp65            ;12
  2432.     dc.l    cpx65            ;13
  2433.     dc.l    cpy65            ;14
  2434.     dc.l    dec65            ;15
  2435.     dc.l    dex65            ;16
  2436.     dc.l    dey65            ;17
  2437.     dc.l    eor65            ;18
  2438.     dc.l    inc65            ;19
  2439.     dc.l    inx65            ;1a
  2440.     dc.l    iny65            ;1b
  2441.     dc.l    jmp65            ;1c
  2442.     dc.l    jsr65            ;1d
  2443.     dc.l    lda65            ;1e
  2444.     dc.l    ldx65            ;1f
  2445.     dc.l    ldy65            ;20
  2446.     dc.l    lsr65            ;21
  2447.     dc.l    nop65            ;22
  2448.     dc.l    ora65            ;23
  2449.     dc.l    pha65            ;24
  2450.     dc.l    php65            ;25
  2451.     dc.l    pla65            ;26
  2452.     dc.l    plp65            ;27
  2453.     dc.l    rol65            ;28
  2454.     dc.l    ror65            ;29
  2455.     dc.l    rti65            ;2a
  2456.     dc.l    rts65            ;2b
  2457.     dc.l    sbc65            ;2c
  2458.     dc.l    sec65            ;2d
  2459.     dc.l    sed65            ;2e
  2460.     dc.l    sei65            ;2f
  2461.     dc.l    sta65            ;30
  2462.     dc.l    stx65            ;31
  2463.     dc.l    sty65            ;32
  2464.     dc.l    tax65            ;33
  2465.     dc.l    tay65            ;34
  2466.     dc.l    tsx65            ;35
  2467.     dc.l    txa65            ;36
  2468.     dc.l    txs65            ;37
  2469.     dc.l    tya65            ;38
  2470.     
  2471. ; The following instructions are undocumented
  2472.  
  2473.     dc.l    anc65            ;39
  2474.     dc.l    ane65            ;3a
  2475.     dc.l    arr65            ;3b
  2476.     dc.l    asr65            ;3c
  2477.     dc.l    dcp65            ;3d
  2478.     dc.l    isb65            ;3e
  2479.     dc.l    jam65            ;3f
  2480.     dc.l    lae65            ;40
  2481.     dc.l    lax65            ;41
  2482.     dc.l    lxa65            ;42
  2483.     dc.l    rla65            ;43
  2484.     dc.l    rra65            ;44
  2485.     dc.l    sax65            ;45
  2486.     dc.l    sbx65            ;46
  2487.     dc.l    sha65            ;47
  2488.     dc.l    shs65            ;48
  2489.     dc.l    shx65            ;49
  2490.     dc.l    shy65            ;4a
  2491.     dc.l    slo65            ;4b
  2492.     dc.l    sre65            ;4c
  2493.     
  2494.     
  2495. ;==========================================================================
  2496.  
  2497. adrmodes    dc.l    adrimp            ;00
  2498.     dc.l    impstr
  2499.     dc.l    adracc            ;01
  2500.     dc.l    accstr
  2501.     dc.l    adrimm            ;02
  2502.     dc.l    immstr
  2503.     dc.l    adrrel            ;03
  2504.     dc.l    relstr
  2505.     dc.l    adrzero            ;04
  2506.     dc.l    zerostr
  2507.     dc.l    adrzerox        ;05
  2508.     dc.l    zeroxstr
  2509.     dc.l    adrzeroy        ;06
  2510.     dc.l    zeroystr
  2511.     dc.l    adrabs            ;07
  2512.     dc.l    absstr
  2513.     dc.l    adrabsx            ;08
  2514.     dc.l    absxstr
  2515.     dc.l    adrabsy            ;09
  2516.     dc.l    absystr
  2517.     dc.l    adrindx            ;0a
  2518.     dc.l    indxstr
  2519.     dc.l    adrindy            ;0b
  2520.     dc.l    indystr
  2521.     dc.l    adrind            ;0c
  2522.     dc.l    indstr
  2523.  
  2524. ;==========================================================================
  2525.  
  2526. ;for tracing
  2527. opstrings    dc.b    '??? '            ;00
  2528.     dc.b    'ADC '            ;01
  2529.     dc.b    'AND '            ;02
  2530.     dc.b    'ASL '            ;03
  2531.     dc.b    'BCC '            ;04
  2532.     dc.b    'BCS '            ;05
  2533.     dc.b    'BEQ '            ;06
  2534.     dc.b    'BIT '            ;07
  2535.     dc.b    'BMI '            ;08
  2536.     dc.b    'BNE '            ;09
  2537.     dc.b    'BPL '            ;0A
  2538.     dc.b    'BRK '            ;0B
  2539.     dc.b    'BVC '            ;0C
  2540.     dc.b    'BVS '            ;0D
  2541.     dc.b    'CLC '            ;0E
  2542.     dc.b    'CLD '            ;0F
  2543.     dc.b    'CLI '            ;10
  2544.     dc.b    'CLV '            ;11
  2545.     dc.b    'CMP '            ;12
  2546.     dc.b    'CPX '            ;13
  2547.     dc.b    'CPY '            ;14
  2548.     dc.b    'DEC '            ;15
  2549.     dc.b    'DEX '            ;16
  2550.     dc.b    'DEY '            ;17
  2551.     dc.b    'EOR '            ;18
  2552.     dc.b    'INC '            ;19
  2553.     dc.b    'INX '            ;1A
  2554.     dc.b    'INY '            ;1B
  2555.     dc.b    'JMP '            ;1C
  2556.     dc.b    'JSR '            ;1D
  2557.     dc.b    'LDA '            ;1E
  2558.     dc.b    'LDX '            ;1F
  2559.     dc.b    'LDY '            ;20
  2560.     dc.b    'LSR '            ;21
  2561.     dc.b    'NOP '            ;22
  2562.     dc.b    'ORA '            ;23
  2563.     dc.b    'PHA '            ;24
  2564.     dc.b    'PHP '            ;25
  2565.     dc.b    'PLA '            ;26
  2566.     dc.b    'PLP '            ;27
  2567.     dc.b    'ROL '            ;28
  2568.     dc.b    'ROR '            ;29
  2569.     dc.b    'RTI '            ;2A
  2570.     dc.b    'RTS '            ;2B
  2571.     dc.b    'SBC '            ;2C
  2572.     dc.b    'SEC '            ;2D
  2573.     dc.b    'SED '            ;2E
  2574.     dc.b    'SEI '            ;2F
  2575.     dc.b    'STA '            ;30
  2576.     dc.b    'STX '            ;31
  2577.     dc.b    'STY '            ;32
  2578.     dc.b    'TAX '            ;33
  2579.     dc.b    'TAY '            ;34
  2580.     dc.b    'TSX '            ;35
  2581.     dc.b    'TXA '            ;36
  2582.     dc.b    'TXS '            ;37
  2583.     dc.b    'TYA '            ;38
  2584.     
  2585.     dc.b    'ANC '            ;39
  2586.     dc.b    'ANE '            ;3a
  2587.     dc.b    'ARR '            ;3b
  2588.     dc.b    'ASR '            ;3c
  2589.     dc.b    'DCP '            ;3d
  2590.     dc.b    'ISB '            ;3e
  2591.     dc.b    'JAM '            ;3f
  2592.     dc.b    'LAE '            ;40
  2593.     dc.b    'LAX '            ;41
  2594.     dc.b    'LXA '            ;42
  2595.     dc.b    'RLA '            ;43
  2596.     dc.b    'RRA '            ;44
  2597.     dc.b    'SAX '            ;45
  2598.     dc.b    'SBX '            ;46
  2599.     dc.b    'SHA '            ;47
  2600.     dc.b    'SHS '            ;48
  2601.     dc.b    'SHX '            ;49
  2602.     dc.b    'SHY '            ;4a
  2603.     dc.b    'SLO '            ;4b
  2604.     dc.b    'SRE '            ;4c
  2605.  
  2606. ;==========================================================================
  2607.  
  2608. adrstrings    ;also for tracing purposes    
  2609. impstr    dc.b    $a,$a,0
  2610. accstr    dc.b    'A',$a,$a,0
  2611. immstr    dc.b    '#$%02x',$a,$a,0
  2612. relstr    dc.b    '$%04x',$a,$a,0
  2613. zerostr    dc.b    '$%02x',$a,$a,0
  2614. zeroxstr    dc.b    '$%02x,X',$a,$a,0
  2615. zeroystr    dc.b    '$%02x,Y',$a,$a,0
  2616. absstr    dc.b    '$%04x',$a,$a,0
  2617. absxstr    dc.b    '$%04x,X',$a,$a,0
  2618. absystr    dc.b    '$%04x,Y',$a,$a,0
  2619. indxstr    dc.b    '($%02x,X)',$a,$a,0
  2620. indystr    dc.b    '($%02x),Y',$a,$a,0
  2621. indstr    dc.b    '($%04x)',$a,$a,0
  2622.  
  2623.  
  2624.